deftype

    11熱度

    1回答

    我很好奇如何做一個包含自身引用的Clojure deftype, (deftype BinaryTree [^BinaryTree left ^BinaryTree right]) 這不起作用......但是我看不出內在的原因,因爲底層的Java類完全可以引用自己。 我在這裏做錯了什麼? Mike。

    5熱度

    2回答

    (deftype Bag [state] Object (toString [bag] (str "Bag???" state))) 我想了toString看起來像 clojure.core=> (def b (Bag. {:apples 1 :bannanas 4})) #'clojure.core/b clojure.core=> (str b) "B

    2熱度

    2回答

    的Clojure允許deftype s表示不完全實現一個接口,如 (deftype Foo [x] clojure.lang.ISeq (next [this] x)) (Foo沒有實現seq)。來自Pythonic的duck-typing,或者至多(或者最糟糕的,取決於你的POV),ABCs,我很難理解爲什麼允許這樣的不完整的實現,因爲我認爲接口的重點是保證一套方法(就像現在一樣,似乎要安全

    1熱度

    2回答

    每http://www.assembla.com/spaces/clojure/wiki/Datatypes 我應該能夠鍵入以下成LEIN答覆: (DEFTYPE酒吧[ABCDE]) (DEF B(酒吧1 2 3 4 5)) 然而,當我做我得到以下輸出: java.lang.Exception的:期待變種,但酒吧被映射到類user.Bar(NO_SOURCE_FILE:31) 我很困惑,是一個完整

    6熱度

    1回答

    我想在我的Clojure deftype中實現transient和persistent!。據我所知,這意味着有另一種deftype,TransientMyThing,實現必要的方法。好了,但是這兩個類需要彼此瞭解才能返回對方的實例。 我想我可以通過前向聲明Clojure函數make-transient和make-persistent,然後定義deftype(通過引用該函數),然後使用現有類型實現函

    4熱度

    1回答

    作爲練習,我正在開發一個類似於Vector的數據結構。我已經實現了IPersistentVector擴展的所有接口,但是我沒有找到'conj'定義的接口。那是哪個界面? 謝謝!

    2熱度

    1回答

    Other是What的更復雜版本(包裝)。它可以做什麼What但還有更多。我小心定義了2個名稱空間。 (ns what) (defprotocol IWhatever (whatever [this])) (deftype What [] IWhatever (whatever [this] (str "whatever"))) (whate

    3熱度

    2回答

    我希望能夠使用已定義的類型作爲defmethod的參數專用程序。動機是可讀性和靈活性,以在稍後階段改變。 Somehting like: (deftype foo() 'fixnum) (defmethod bar ((x foo)) ...) (defmethod baz ((x foo)) ...) 但是,這是行不通的。 CLtL2說「表單deftype不會創建任何類。」 所以我必

    12熱度

    2回答

    我有一個名爲techne的leiningen設立的項目。我創建了一個名爲scrub的模塊,其中包含一個名爲Scrub的類型和一個名爲foo的函數。 技藝/ scrub.clj: (ns techne.scrub) (deftype Scrub [state] Object (toString [this] (str "SCRUB: " state)))

    1熱度

    1回答

    當我做 (defmacro my-deftype [& code] `(deftype [email protected] (toString [this] var1))) (my-deftype Qqq [var1] Object) 它告訴CompilerException ... No such var: mynamespace/var1 如何引用在宏DEFTYPE的變量是否正確?我希望