Skip to content

Comment on Understanding Clojure Transducers Through Types

Comments

    trans :: (b -> a) -> (c -> a -> c) -> c -> b -> c
in Haskell is just
    trans f reduce c = reduce c . f
isn't it? What am I missing here?

He ends up calling that `mapping` later

    mapping :: (a -> b) -> Transducer b a
    mapping f xf r a = xf r (f a)
which, modulo a little renaming, eta-expansion, and point elimination is the same as your `trans`

your trans is just the "mapping" case. in general other functions can be applied to (c -> a -> c) -> c -> b -> c which will have more complex implementations than just composition.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.