#,% の入れ子が悪いことはわかっていますが、オンラインの匿名関数を短く書いて、ちょうど 2 レベルの #/% を使用することがよくあります。
したがって、私は好奇心旺盛ですが、各 % が最も近い (最も小さい囲み) # にバインドされていることを clojure に伝える方法はありますか?
ありがとう!
ネストされた無名関数を持つことはまったく問題ありません。非短縮構文を使用するだけです。
#(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)))
無名関数のネストは clojure ではサポートされていません。
編集:「匿名関数」とは#(...)
、 ではなくを意味してい(fn ...)
ました。混乱をお詫び申し上げます。