ClojureでClojureISeqとして使用したいScalaクラス(Lift's Box、Scala's Optionなど)がたくさんあります。
シーケンスに関連するさまざまな関数がすべて「正しく機能する」ように、これらのクラスをISeqにする方法をClojureに指示するにはどうすればよいですか?
クラスがIterable
インターフェースを実装している場合はseq
、それらを呼び出してシーケンスを取得できます。シーケンスライブラリのほとんどの関数はこれを自動的に実行しますが、ほとんどすべての通常の場合、そのままのようにseq関数に渡すことができfirst
ますcount
。
アーサーの答えに基づいて構築するために、これらの線に沿ってScalaで汎用ラッパークラスを提供できます。
class WrapCollection(repr: TraversableOnce[_]) extends clojure.lang.Seqable { ... }