Advertisement
Guest User

Untitled

a guest
Oct 10th, 2015
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.57 KB | None | 0 0
  1. user=> (defprotocol P (plength [this]) (pget [this index]))
  2. P
  3. user=> (deftype Foo [v] P (plength [this] (count v)) (pget [this index] (nth v index)))
  4. user.Foo
  5. user=> (defn obj-seq [obj index] (lazy-seq (if-not (= index (plength obj)) (cons (pget obj index) (obj-seq obj (inc index))) nil)))
  6. #'user/obj-seq
  7. user=> (obj-seq (->Foo [1 2 3]))
  8. ArityException Wrong number of args (1) passed to: user/obj-seq clojure.lang.AFn.throwArity (AFn.java:429)
  9. user=> (obj-seq (->Foo [1 2 3]) 0)
  10. (1 2 3)
  11. user=> (let [[a b c] (obj-seq (->Foo [1 2 3]) 0)] (println a) (println b) (println c))
  12. 1
  13. 2
  14. 3
  15. nil
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement