5

#,% の入れ子が悪いことはわかっていますが、オンラインの匿名関数を短く書いて、ちょうど 2 レベルの #/% を使用することがよくあります。

したがって、私は好奇心旺盛ですが、各 % が最も近い (最も小さい囲み) # にバインドされていることを clojure に伝える方法はありますか?

ありがとう!

4

2 に答える 2

8

ネストされた無名関数を持つことはまったく問題ありません。非短縮構文を使用するだけです。

#(foo (bar %1)
      (baz %2))

と同等です

(fn [x y]
  (foo (bar x)
       (bax y)))

完全なバリアントは、任意にネストできます。また、ロットで使用する傾向がある場合は、代わりに使用することを検討しmapてください(私の意見では、より明確に見える傾向があります):fnfor

(map (fn [row]
       (map (fn [col]
              (+ (* 10 row) col))
            (range 3)))
     (range 3))

と同じことをします

(for [row (range 3)]
  (for [col (range 3)]
    (+ (* 10 row) col)))
于 2012-04-09T21:10:08.033 に答える
6

無名関数のネストは clojure ではサポートされていません。

編集:「匿名関数」とは#(...)、 ではなくを意味してい(fn ...)ました。混乱をお詫び申し上げます。

于 2012-04-09T06:14:10.740 に答える