这个问题毫无意义,因为我是个白痴,误读了Clojure的文档。
我有这样的事情:
(defprotocol Foo "doc" [foo bar]
(Foo-bark [foo])
(Foo-meow [foo])
(Foo-other [foo]
... long
multi
line
inline
implementation))
(defprotocol Foo "doc" [foo bar]
(Foo-bark [foo])
(Foo-mewo [foo])
(Foo-other [foo]))
(define Foo-other [foo]
.. long
multi
line
implementation)
以上可能吗?如果没有,我能找到的最接近的是什么?
答案 0 :(得分:4)
defprotocol不能用于为其功能/方法提供实现。您需要使用deftype或reify或extend / extend-type(或者下拉到类来执行此操作。对于您的用例,您可以使用extend
来引用先前定义的函数来实现协议。 / p>