•
for
(for seq-exprs body-expr)
列表内涵逻辑,接收一组
(
一个或多个
)
绑定
form(
binding-form
)/
集合表达式(
collection-expr
)对,每个绑定
form(
binding-
form
)/
集合表达式(
collection-expr
)对后面跟着
0
个或多个
modifier
,最后获得一个求值表达式表示的惰性序列。
这里的
seq-exprs
形式为:
[
binding-form
collection-expr
modifier modifier modifier
…
]
<!--[if ppt]-->
•<!--[endif]-->
或者多个的表现形式为:
[
binding-form
collection-expr
modifier modifier modifier
…
binding-form
collection-expr
modifier modifier modifier
…
…
binding-form
collection-expr
modifier modifier modifier
…
]
<!--[if ppt]-->
•<!--[endif]-->
例子:
user=> (for [x [0 1 2 3 4 5]
#_=> :let [y (* x 3)]
#_=> :when (even? y)]
#_=> y)
(0 6 12)
user=> (for [x '(0 1 2 3 4 5)
#_=> :let [y (* x 3)]
#_=> :when (even? y)]
#_=> y)
(0 6 12)
<!--[if ppt]-->
•<!--[endif]-->
再来个例子:
user=> (for [x [0 1 2 3 4 5]
#_=> y [0 1 2 3]
#_=> :let [z (* x y)]]
#_=> z)
(0 0 0 0 0 1 2 3 0 2 4 6 0 3 6 9 0 4 8 12 0 5 10 15)
再来个例子:
user=> (for [x [0 1 2 3 4 5]
#_=> :let [x (* x 2)]
#_=> y [0 1 2 3]
#_=> :let [z (* x y)]]
#_=> z)
(0 0 0 0 0 2 4 6 0 4 8 12 0 6 12 18 0 8 16 24 0 10 20
30)