Transducers promise to separate the element transformation from the
actual traversal of the input data. This allows the very same transducer
pipeline to be used in reduce
(resp. the transducer specific
variant transduce
) and at the same time apply the exact same
transformation logic to asynchronous channels as provided by
core.async
.
Just as well you could create a traditional lazy sequence from the transducer. The promise is to provide the laziness we know from sequences, but save the cons cells created in each step of the transformation pipeline. This is more efficient and reduces the load on the garbage collector.
A very attractive promise indeed. But do transducers deliver on that promise?
Published by Meikel Brandmeyer on .
I'm still recovering from the dutch Clojure days in Amsterdam and EuroClojure in Berlin. They were great conferences. And the Kulturbrauerei was a stunning location. I met a lot of friends and even their families. I also got to know new clojurians and really enjoyed our chats in the hallway and over lunch. Once more I was happy about the warm and friendly Clojure community.
However I'm also left with a bitter taste. And it is not related to me missing the crowd already.
Published by Meikel Brandmeyer on .
Did you know, you don't need type hints? No! Really! You
don't need them. There is only one situation where you
might
need them: on call sites for host interop.
Published by Meikel Brandmeyer on .
Chris Houser got his first problem accepted at 4clojure. I decided to give core.logic a try—David Nolen's awesome logic programming framework for Clojure. And surprisingly I ended up with a working solution.
Published by Meikel Brandmeyer on .
“Recent wisdom” has it, that protocol functions should be a low-level interface. Of course I didn't go with this statement in my ignorance. Luckily there is always a Christophe around to enlighten me.
This wisdom actually isn't “recent.” It is quite old and you can find it in many object-oriented language libraries. And as one additional level of indirection solves every problem, this boils down to the one cause of bad design: lack of separation of concerns.
Published by Meikel Brandmeyer on .
I'm a long-time Clojure user and the developer of several open source projects mostly involving Clojure. I try to actively contribute to the Clojure community.
My most active projects are at the moment VimClojure, Clojuresque and ClojureCheck.
Copyright © 2009-2014 All Right Reserved. Meikel Brandmeyer