Clojureに関するnakagawamakoto2007のブックマーク (2)

  • GPソフト Wiki - ClojureでTransducer

    Transducer(xf)は、Reducing function用のTransformerである。 Transducerは関数合成可能。そして合成するとき、以下のことに依存しない。 入力コンテキスト(コレクションなのか、Streamなのか、Channelなのか?) 出力コンテキスト(コレクションが欲しいのか、スカラ値が欲しいのか?) こういったことは、最後にreduce/transduceするときまで気にする必要がない。 ;; コレクションからコレクションへ (transduce all-t conj d) ;;=> ["1" "2"] ;; スカラ値へ (transduce all-t str d) ;;=> "12" コンテキストを決めるのは、ここで使うconjやstrである。all-tが適切なrfを作ってくれる。このコードは、以下のコードと同じである。 (def rf-v (all

    nakagawamakoto2007
    nakagawamakoto2007 2017/08/17
    "Understanding Tranceducers"のお供に。
  • Understanding Transducers - Elben Shira

    What are transducers? Using transducers is easy enough—but how do they work underneath the hood? This article explores transducers by ignoring transducers. Instead we will examine two ordinary functions, map and filter. We’ll play with them and scrutinize them. And we’ll marvel at the power of higher-order functions as we apply abstractions. And perhaps, if we’re lucky, we’ll bump into transducers

    nakagawamakoto2007
    nakagawamakoto2007 2017/08/17
    分かりやすい。読んでいて、腑に落ちる。
  • 1