Live data from Hacker News

Clojure 1.7 is now available

blog.cognitect.com

1–10 of 125 posts

Re: Clojure 1.7 is now available

#2
>Transducers are composable algorithmic transformations. They are independent from the context of their input and output sources and specify only the essence of the transformation in terms of an individual element. Because transducers are decoupled from input or output sources,

The biggest thing holding me back from learning Clojure is that I fear it will take me a decade to become remotely competent in it.

Re: Clojure 1.7 is now available

#3

>Transducers are composable algorithmic transformations. They are independent from the context of their input and output sources and specify only the essence of the transformation in terms of an individual element. Because transducers are decoupled from input or output sources, The biggest thing holding me back from learning Clojure is that I fear it will take me a decade to become remotely competent in it.

Don't worry too much if you don't get the esoteric stuff in the beginning. The fact that it's there just means that there's room to grow. The core language is actually very simple and quite straightforward. It just allows for some quite mind-boggling stuff.

Try Carin Meier's Living Clojure if you feel up for an intro.

Re: Clojure 1.7 is now available

#4

>Transducers are composable algorithmic transformations. They are independent from the context of their input and output sources and specify only the essence of the transformation in terms of an individual element. Because transducers are decoupled from input or output sources, The biggest thing holding me back from learning Clojure is that I fear it will take me a decade to become remotely competent in it.

You don't need to learn every feature to be competent in the language. Some features are advanced features that are not required in day-to-day programming (eg, transients, you can go forever without ever touching them, but if you need performance they're there). A lot of the advanced things are of most interest to library authors.

Re: Clojure 1.7 is now available

#5

>Transducers are composable algorithmic transformations. They are independent from the context of their input and output sources and specify only the essence of the transformation in terms of an individual element. Because transducers are decoupled from input or output sources, The biggest thing holding me back from learning Clojure is that I fear it will take me a decade to become remotely competent in it.

It is one of the simplest and easiest languages around.

The addition of transducers is an unfortunate case of Clojure "pulling a Haskell", valuing an elegant abstraction over ease of understanding and learning. Indeed, your comment alone shows that doing them (and especially giving them a high profile) was a mistake. Just because you can abstract something elegantly doesn't mean you should. No beautiful abstraction is worth scaring people away. Fortunately, Clojure doesn't make many such mistakes, and it usually tries to err on the side of pragmatism. I hope transducers aren't the beginning of a trend.

But just don't use transducers until you feel comfortable enough with the language. They're not an essential feature.

Re: Clojure 1.7 is now available

#6

>Transducers are composable algorithmic transformations. They are independent from the context of their input and output sources and specify only the essence of the transformation in terms of an individual element. Because transducers are decoupled from input or output sources, The biggest thing holding me back from learning Clojure is that I fear it will take me a decade to become remotely competent in it.

No need. Getting started, and to a level where you can be productive, is very easy. LISP is a very simple language, and lots of the features of Clojure mean that it's simple in practice too. That's compared to Haskell and Scala, which do require a little theory in order to get started.

IMHO.

There will perhaps come a time, where you want to know about and transducers, but by that time the concepts won't seem intimidating.

Re: Clojure 1.7 is now available

#7

>Transducers are composable algorithmic transformations. They are independent from the context of their input and output sources and specify only the essence of the transformation in terms of an individual element. Because transducers are decoupled from input or output sources, The biggest thing holding me back from learning Clojure is that I fear it will take me a decade to become remotely competent in it.

Actually the learning curve is very gentle, and you can gradually expand from basic features into the more advanced stuff when ready. Many of the Clojure features that have sophisticated underlying design principles (like transducers) can be used cookbook style from easy-to-understandable examples. Jump in, the water's warm.

Re: Clojure 1.7 is now available

#8

>Transducers are composable algorithmic transformations. They are independent from the context of their input and output sources and specify only the essence of the transformation in terms of an individual element. Because transducers are decoupled from input or output sources, The biggest thing holding me back from learning Clojure is that I fear it will take me a decade to become remotely competent in it.

This is only slightly complicated if you're writing your own transducer operation.

What is interesting is that these transducing operations can be written quite generically - code reuse is huge.

But, usage of transducers is similar to Java 8 Streams, or Haskell stream fusion, only that the implementation is fully generic, not dependent on the container/source.

Re: Clojure 1.7 is now available

#9
It would be great to see a refactor of some code using transducers to get a better sense of what they're useful for. From an abstraction standpoint, I can see the attraction; but I am having a tough time imagining how it would improve code in practice.

Re: Clojure 1.7 is now available

#10

>Transducers are composable algorithmic transformations. They are independent from the context of their input and output sources and specify only the essence of the transformation in terms of an individual element. Because transducers are decoupled from input or output sources, The biggest thing holding me back from learning Clojure is that I fear it will take me a decade to become remotely competent in it.

Don't worry too much if you don't get the esoteric stuff in the beginning. The fact that it's there just means that there's room to grow. The core language is actually very simple and quite straightforward. It just allows for some quite mind-boggling stuff. Try Carin Meier's Living Clojure if you feel up for an intro.

2nd for Living Clojure. Great crash course in Clojure for working developers.
Post reply on HN