clojure.core.reducersの代替手段map-indexed
はありますか? r/map
(新しいシーケンスを作成しないでください)のようにゆっくりと動作するものが欲しいです。還元剤の代わりにmap-indexed代替手段
答えて
私はmap-indexed
は、トランスデューサを返す1-アリティのバージョンを(map
、filter
、および他の多くのコア機能と同様に)持っているので、何が本当に使いたいが、transducerであると思われます。トランスデューサは合成可能であり、中間シーケンスを作成しません。ここで簡単な例である:
(def xf (comp
(map-indexed (fn [i value] [i value]))
(filter (fn [[i value]] (odd? i)))
(map second)))
この言う:インデックスが奇数ベクトルのみをフィルタリング、map-indexed
を使用して索引付けベクトルを生成し、第2の素子を得ます。 (filter odd? collection)
と言ってもそれは長らく残念ですが、それはあくまで例です。
(into [] xf "ThisIsATest")
=> [\h \s \s \T \s]
か、transduce
機能を使用して、結果にstr
を適用することができます:
あなたはinto
でこれを使用することができます
(transduce xf str "ThisIsATest")
=> "hssTs"
素敵で、きれいでシンプルです。また、 "Transducer De-Mystifier"の例としてタグ付けする必要があります。 –
これは実際には '(filter odd?coll)'ではありません。値ではなくインデックスでフィルタリングしているからです。むしろ、それは '(take-nth 2(rest coll))'です。 – amalloy
- 1. angle-4の代わりにangle-auto-validateの代替手段
- 2. Mavenに代わる代替手段<packaging> pom
- 3. MooToolsフォームバリデータの代替手段
- 4. Dynamic JsonParsingの代替手段
- 5. Apache tikaの代替手段
- 6. django.db.close_connection()の代替手段
- 7. YQLの代替手段
- 8. CryptEncryptの代替手段
- 9. DataGridViewの代替手段
- 10. Application Insightの代替手段:
- 11. SQLカーソルの代替手段
- 12. java.util.Dateの代替手段
- 13. プリプロセッサディレクティブの代替手段
- 14. underscore.jsの代替手段
- 15. TOADの代替手段(Linux)
- 16. シングルトンの代替手段
- 17. Play.application()の代替手段
- 18. ポートレットの代替手段
- 19. java.util.concurrent.ConcurrentSkipListSetの代替手段
- 20. IE8のPreventDefault代替手段
- 21. 再帰の代替手段
- 22. getLastKnownLocationの代替手段
- 23. APIレベルの代わりにisAttachedToWindow()の代替手段を使用します。
- 24. F#のarray2Dに代わるより機能的な代替手段
- 25. R:scaleByより速い代替手段
- 26. 還元還元剤で他の還元剤の状態を取得する
- 27. 還元還元剤の改善
- 28. 還元剤と還元剤との結合
- 29. SOAのトランスレーション層の代替手段:WCF
- 30. コントローラアクション用のバインディングモデルの代替手段
あなたが唯一の減速にバインドされていない場合、あなたができます'map-indexed'のトランスデューサバージョンを使用すると、中間のコレクションを作成するのを避けることができます – leetwinski