के रूप में क्लोजर डेफ्टाइप का उपयोग करके मैं एक कंपाइलर में क्लोजर का उपयोग करने की कोशिश कर रहा हूं और इस प्रकार 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))))
और आरईपीएल से निम्नलिखित सत्र:: निम्नलिखित कोड पर विचार करें
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")
सूचना है कि अप्रत्यक्ष प्रकार के लिए उत्पन्न वर्ग^पूर्णांक खो दिया है संकेत प्रत्यक्ष-प्रकार है। मैं उन संकेतों को कैसे प्राप्त करूं?