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的变量是否正确?我希望