The promise of transducers

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 .

A bitter taste

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 about type hints?

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 .

A field trip into logic programming

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 .

Separation of Concerns

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 .