Comment

Comment by adityaathalye

Plain old functions & eager evaluation & a bit more awesome sauce.

Given transducers, we can compose mutually independent parts at will:

- Data source (sequence, stream, channel, socket etc.)

- Data sink (sequence, stream, channel, socket etc.)

- Data transformer (function of any value -> any other value)

- Data transformation process (mapping, filtering, reducing etc.)

- Some process control (we can transduce finite data (of course) as well as streams, and also have optional early termination in either case. I'm not sure about first-class support for other methods like backpressure.)

e.g. read numbers off a Kafka topic, FizzBuzz them, and send them to another Kafka topic, OR slurp numbers from file on disk, FizzBuzz them, and push into an in-memory queue. But each time, you don't have to rewrite your core fizzbuzz function, nor your `(map fizzbuzz)` definition.

cf. https://www.evalapply.org/posts/n-ways-to-fizzbuzz-in-clojur...

Discussion

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton