質問はタイトルにあります。以下にトランスデューサーをコピーします-ソースの一部map
:
([f]
(fn [rf]
(fn
([] (rf))
([result] (rf result))
([result input]
(rf result (f input)))
([result input & inputs] ;why?
(rf result (apply f input inputs))))))
これは、の定義が含まれているソースclojure.core
へのリンクですmap
。
map
各コレクションアイテムの引数を指定してマッピング関数を呼び出し、一度に複数のコレクションを処理できます。
(map + [1 2 3] [4 5 6])
=> (5 7 9)
+
機能は、例えば、これらのコレクションの中の値のペアごとに一度呼び出されます(+ 1 4)
、(+ 2 5)
、(+ 3 6)
。非トランスデューサーバージョンは次のようになります。
map
トランスデューサは、同じように動作します:
(sequence (map +) [1 2 3] [4 5 6])
=> (5 7 9)
[
map
]各collの最初の項目のセットにfを適用し、続いて各collの2番目の項目のセットにfを適用して、いずれかのcollがなくなるまでの結果で構成されるレイジーシーケンスを返します。他のcollの残りのアイテムは無視されます。関数fは、collの数の引数を受け入れる必要があります。コレクションが提供されていない場合、トランスデューサーを返します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加