This week at Hashrocket Chicago we had the third meeting of an internal company book club. Our focus was chapter three of Seven More Languages in Seven Weeks, 'Elm'.
Here's some Elm I wrote while reading the first chapter:
-- Use currying to express 6 * 8 > multiply x y = x * y > multiplySix = (multiply 6) -- <function> : number -> number > multiplySix 8 -- 48 : number
Welcome to the bleeding edge.
Elm is pretty new. Almost every code example in the book had deprecated syntax. Sweeping API changes like this are the hallmark of an immature language, and if I didn't also have the newer eBook, I would not have been able to finish the chapter.
I like that Elm has strong typing, offers a more reactive way to handle user input, and seems like a growing language with a passionate community. I watched a 30 minute talk with the creator (included in the links below), and was impressed with his vision and thoughtfulness.
As a newbie to the ML-family of languages, I found Elm hard to learn. I would dispute the 'easy path from novice to expert' idea swirling around Elm. Perhaps they are suggesting that, like Go, some of the concepts are abstract and pretty difficult, but the API itself is small. Once you get past the theory, the tools are concise and intuitive?
I kept a big list of the links I found useful this week, available here: https://github.com/jwworth/resources#elm.
I think Elm may end up changing the world, even if Elm itself isn't the final iteration. Some of the concepts it represents, like functional and reactive programming, signals, and the reduction of runtime exceptions, are of great interest to me. They are where I think the web is headed. In the meantime, I found Elm an interesting diversion, and a welcome challenge to my conventional ideas of a language.
Next week: Elixir!