我知道嵌套#,%是坏的 - 但是,我经常发现自己编写简短的在线匿名函数,最终只有2个级别的#/%。
因此,我很好奇,有没有办法告诉clojure每个%绑定到最近的(最小的封闭)#?
谢谢!
答案 0 :(得分:8)
嵌套匿名函数非常好。您只需使用非简写语法。
#(foo (bar %1)
(baz %2))
相当于
(fn [x y]
(foo (bar x)
(bax y)))
完整变体可以任意嵌套。另外,如果您倾向于使用map
批次fn
,请考虑使用for
代替(在我看来这看起来更清晰):
(map (fn [row]
(map (fn [col]
(+ (* 10 row) col))
(range 3)))
(range 3))
和
做同样的事情(for [row (range 3)]
(for [col (range 3)]
(+ (* 10 row) col)))
答案 1 :(得分:6)
clojure不支持嵌套匿名函数。
编辑:通过"匿名函数"我的意思是#(...)
,而不是(fn ...)
。为混乱道歉。