std.lib.generate

*loop-id*

dynamic

gen

macro

added in 3.0

(gen & bodies)

returns a generator iteratively using yield

(gen (loop i 10 (if-not (zero? i) (do (yield i) (recur (dec i)))))) => ’(10 9 8 7 6 5 4 3 2 1)

(->> (gen (loop i 0 (if (even? i) (yield i)) (recur (inc i)))) (take 5)) => 0 2 4 6 8

macroexpand-code

added in 3.0

(macroexpand-code form)

macroexpand code, keeping the original meta

tag-visited

added in 3.0

(tag-visited e)

appends :form/yield to the form meta

visit

multimethod

added in 3.0

testing inputs for visit

visit-sym

added in 3.0

(visit-sym [x :as form])

returns the visitor dispatch

(visit-sym ’(if :a 1 2)) => ’if

(visit-sym ’(yield 1)) => ’yield

(visit-sym ’(std.lib.generate/yield 1)) => ’yield

visited?

added in 3.0

(visited? e)

checks if form has been visted

(-> (tag-visited ’(loop (+ 1 2 3))) visited?) => true

yield

added in 3.0

(yield e)

yields single value has to be used to within gen form

(yield 1) => (throws)

yield-all

added in 3.0

(yield-all e)

same as yield but returns entire seq