Class Clojure:为现有java类实现Seqable

Class Clojure:为现有java类实现Seqable,class,interface,clojure,Class,Interface,Clojure,我试图让一个核心java类实现一个接口。 我正在尝试以下几点: (extend-protocol clojure.lang.Seqable java.lang.Integer (seq [this] (seq (str this)))) 但这似乎不起作用,因为Sekable只是一个接口,而不是一个协议。 是否可以使(seq 123)工作?如何为java.lang.Strings实现seq 代理似乎也无法做到这一点 我知道我一定错过了一些非常明显的东西。不可能clojure.lang.R

我试图让一个核心java类实现一个接口。 我正在尝试以下几点:

(extend-protocol clojure.lang.Seqable
  java.lang.Integer
  (seq [this] (seq (str this))))
但这似乎不起作用,因为Sekable只是一个接口,而不是一个协议。 是否可以使
(seq 123)
工作?如何为java.lang.Strings实现
seq

代理似乎也无法做到这一点


我知道我一定错过了一些非常明显的东西。

不可能
clojure.lang.RT/seqFrom
用于许多java内置类型,如Collection和String,您不能为不直接实现Seqable的类添加自己的类。

如果java类实现了Iterable,并封装在
seq
中,您可以将其作为序列使用,但有一定的限制。

谢谢,我想知道当clojure被设计为使Sekable成为一个协议时,它是否可能,或者它是否真的必须是一个特例。@whounite当clojure最初实现时,他们没有协议。但我的理解是,他们在实现Clojurescript时使用了它们,并取得了巨大成功。