Paste number 90536: seq1

Paste number 90536: seq1
Pasted by: rhickey
When:9 months, 2 weeks ago
Share:Tweet this! | http://paste.lisp.org/+1XUW
Channel:#clojure
Paste contents:
Raw Source | XML | Display As
(defn seq1 [#^clojure.lang.ISeq s]
  (reify [clojure.lang.ISeq]
    (.first [] (.first s))
    (.more [] (seq1 (.more s)))
    (.next [] (let [sn (.next s)] (and sn (seq1 sn))))
    (.seq [] (let [ss (.seq s)] (and ss (seq1 ss))))
    (.count [] (.count s))
    (.cons [o] (.cons s o))
    (.empty [] (.empty s))
    (.equiv [o] (.equiv s o))))

(take 1 (map prn (range 10)))
(take 1 (map prn (seq1 (range 10))))

(take 1 (map prn [1 2 3]))
(take 1 (map prn (seq1 [1 2 3])))

This paste has no annotations.

Colorize as:
Show Line Numbers

Lisppaste pastes can be made by anyone at any time. Imagine a fearsomely comprehensive disclaimer of liability. Now fear, comprehensively.