Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- user=> (defprotocol P (plength [this]) (pget [this index]))
- P
- user=> (deftype Foo [v] P (plength [this] (count v)) (pget [this index] (nth v index)))
- user.Foo
- user=> (defn obj-seq [obj index] (lazy-seq (if-not (= index (plength obj)) (cons (pget obj index) (obj-seq obj (inc index))) nil)))
- #'user/obj-seq
- user=> (obj-seq (->Foo [1 2 3]))
- ArityException Wrong number of args (1) passed to: user/obj-seq clojure.lang.AFn.throwArity (AFn.java:429)
- user=> (obj-seq (->Foo [1 2 3]) 0)
- (1 2 3)
- user=> (let [[a b c] (obj-seq (->Foo [1 2 3]) 0)] (println a) (println b) (println c))
- 1
- 2
- 3
- nil
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement