Этот вопрос тесно связан с этим , но я думаю, что он более общий.
В последнее время я пытаюсь создавать "экземпляры" типа "на лету" с помощью мультиметодов (или уникальной функцииконструктор, если возможно), основанный на теге метаданных.Я связал тип (класс Java под капотом) с этим тегом, а затем я не знал, как продолжить элегантным образом (без eval или java отражения и строк);new - это специальная форма, с которой трудно работать, хотя вы используете макросы.
В seudo-коде это будет:
(def my-tagged-data (with-meta my-data {:my-type-tag my-ns.My-Type}))
(def factory-function [tagged-data]
(create (:my-type-tag (meta tagged-data)) tagged-data))