Я пытаюсь создать список типов - чтобы я мог сопоставить список строк и создать все типы, которые мне нужны.Как создать тип в Clojure с помощью ввода строк для имен символов?
Это где я и добиваюсь:
(defprotocol P (methodname [arg1]))
(deftype T [f] P (methodname [arg1] (println "methodname called")))
Для всего одного экземпляра генерации типа из имен Струнные - Я пытаюсь:
(defmacro create-type [type-name field-list protocol-name protocol-sig]
`(deftype ~type-name ~field-list ~protocol-name ~protocol-sig))
(create-type (symbol "type-name") [field1] (symbol "P") (methodname [arg1]))
Это терпит неудачу с:
ClassCastException clojure.lang.PersistentList cannot be cast to clojure.lang.Symbol clojure.core/ns-resolve (core.clj:4026)
Мой вопрос: Как создать тип в Clojure от входа Stri ngs для имен символов?
Неправильный закрывающая скобка, или я что-то не хватает? Обратите внимание, что '[field1])' закрывает скобки, поэтому весь список на самом деле '(create-type (symbol" type-name ") [field1])' – m0skit0
Остается проблема с исправлением проблемы. – hawkeye