나는 컴파일러에서 clojure를 사용하려고 시도하므로 호출을 deftype
으로 매개 변수화해야합니다. 그러나, 형식 힌트를 통해 수행하는 데 어려움을 겪고 있습니다. REPL에서Clojure deftype을 매개 변수화 된 함수로 사용하기
(defn describe [x]
(let [fields (.getDeclaredFields x)
names (map #(.getName %) fields)
types (map #(.getType %) fields)]
(interleave types names)))
(defn direct [] (deftype direct-type [^int x]))
(defn indirect-helper [] (list ^int (symbol "x")))
(defn indirect [] (eval `(deftype ~(symbol "indirect-type") ~(indirect-helper))))
그리고 다음 세션 : 다음 코드를 고려 간접 형에 대해 생성 된 클래스는^INT를 잃은 것을
Clojure 1.2.0-master-SNAPSHOT
1:1 user=> #<Namespace dataclass>
1:2 dataclass=> (direct)
dataclass.direct-type
1:3 dataclass=> (indirect)
dataclass.indirect-type
1:4 dataclass=> (describe direct-type)
(int "x")
1:5 dataclass=> (describe indirect-type)
(java.lang.Object "x")
공지 사항은 직접 형이 가지고 힌트. 그 힌트를 어떻게 전달할 수 있습니까?