Elm is more than just a cutting-edge programming language, it’s a chance to upgrade the way you think about building web applications. Once you get comfortable with Elm’s refreshingly different approach to application development, you’ll be working with a clean syntax, dependable libraries, and a delightful compiler that essentially eliminates runtime exceptions. Elm compiles to JavaScript, so your code runs in any browser, and Elm’s best-in-class rendering speed will knock your socks off. Let’s get started!
Simply put, the Elm programming language transforms the way you think about frontend web development.
Elm’s legendary compiler is an incredible assistant, giving you the precise and user-friendly support you need to work efficiently. Elm applications have small bundle sizes that run faster than JavaScript frameworks and are famously easy to maintain as they grow. The catch? Elm isn’t JavaScript, so you’ll have some new skills to learn.
Elm in Action teaches you how to build well-designed, highly performant web applications using the Elm language. As you read, you’ll follow an application called Photo Groove that will show you how to structure your application’s domain and behavior, how to maintain a pleasantly modular architecture, and how to deliver a quality product using the Elm language. Along the way, you’ll learn how to interact smoothly with browser functionality, servers, and JavaScript libraries, as well and picking up a few tricks for building fluid, intuitive user experiences. If you’re new to functional programming, you’ll also gain a practical understanding of techniques that will make you a better developer no matter what you’re writing!
I read MEAP6/7. Hopefully the final release will be much different.
This book uses the "example application" format to introduce the language. My personal preference would have been for a concise, opinionated summary of the language, a la Crockford's "Javascript, the good parts", or for a comprehensive reference such as Programming Ruby, to make up for elm's generally poor documentation. However, given the choice of format, it's reasonably easy to follow and finds plausible ways to cover interesting language features.
To get the most out of it, I'd highly recommend trying to implement the features of the sample application on your own, once you've seen them described but haven't seen the code yet. The effort of doing so, the differences you notice between your implementation and the book's, and the maintenance effort of keeping the two in sync gets elm in your head much better than just reading does.
The problem with the book in its current form is that it's very incomplete and buggy. For example, MEAP7 came out while I was about half way through, updating the earlier chapters for elm 0.19 but leaving the book in a strange state where, as you finished those earlier chapters you have to move backwards to an older version of elm.
This is partly the fault of the elm ecosystem itself, refusing to stabilize as it does. However, I think it would be possible to write a more useful book. This one is now 2.5 years old, only 70% done, and still half covering an old version of the language. At this rate, it won't be ready by the time there's another breaking release of elm. Programming Elm from pragprog.com seems to be moving at a much more reasonable pace, and I wish I'd read it instead.
I think that this is a good book, but not for novice. All code is ported to 0.19 and there is almost no typos left in book, so you can almost easily repeat code in your editor and see results.
First 3 chapters are great and fun to read. But after that, every next chapter becomes harder to grokk and keep everything in head. Examples are usefull (integration with JS in chapter 5 or building tree in chapter 7). But information is given to fast IMHO.
After reading more documentation, another elm book, trying to implement some code by myself, I now can come back to those "hard" chapters and use introduced examples as a reference.
Also, after I read another books, blogs, I learned many usefull tools - "elm-live" package (it has live-reload, compilation, reduxdevtool's like tool, but with working hot reload ) , Debug package. I think it would be great, if author introduce these tools and advocate to use them more. For me, it took some time to finally use Debug.log and --debug flag properly. Also some advices on setup with ide would be great, couse it is also not so obvious which editor to use and where is the best support.
Final con - to many code repeating in the book. What I mean is - author gives some code in chapter, and in the very end goes 1,2 or 3 page of final listing, so reader can check himself. Seems that book becomes bigger with that. Github has code for this book, but I found only final version from last chapter.
Anyway, I would definitely recommend this book for everyone, who is studing Elm. Just be ready that it is not an easy read, but still usefull, and you will need to read more documentation and blog posts, to better grasp material.
Introduces Elm as you develop a non-trivial application with it. Introduces the basics of the language fairly well, although I had minimal experience in the language previously, this helped fill in some gaps in my knowledge and exercise/clarify certain practices, but I didn't learn anything earth shatteringly new or revelatory. I bought the book to get a solid grounding in the practices surrounding the Elm framework and I feel like I managed to accomplish that, but not more.
I also cannot comment on most of the explanations of the basics of the language, having read through Haskell Programming from First Principles and being generally familiar with Haskell and derived languages I can't say how effective the book is at explaining currying, the simplified version of Hindley-Millner type system that Elm uses, etc.
The final book is dated for Elm 0.19 and I was able to follow through the book with that Elm version with no problem. Fair warning that the book and the application you'll build as part of this book relies on json services provided by a third party (elm-in-action.com), so if that goes down you're mostly SoL for the second half of the book onwards, unless you can spin up your own server. The book is a long tutorial so it's not very useful as reference.
The quality of the book in terms of being well put together is severely lacking and in fact more fitting of something you'd find in Manning's MEAP program, except unlike other reviewers I've read the final version. Especially towards the end of the book, inline monospace text is sliced up for no reason, there are typos and at one point neglects to tell you to re-enter JavaScript boilerplate that it previously had you comment out. Thankfully if you're paying attention this is pretty easy to figure out on your own, and despite the subpar quality I had no real problems following along with the book.
If you - like me - feel the need for a structured tutorial to follow in order to get an overall grounding in a new language or framework *and* don't mind some significant (but not especially crippling) deficiencies in quality, then I can recommend this book to get a good grounding in the language and ecosystem. Otherwise, there's not much in here that you couldn't learn on your own.
Richard has a wonderful pace of introducing new concepts, letting you understand the fundamentals and then building more and more advanced applications on top. It felt like a quick read, but very thorough.
NOTE: This review is based on the MEAP version of the book that only has 4 chapters so far. Still didn't want to let this great book sit there alone without any reviews :)
This book stands out from other "Build an app in X language" books due to its carefully crafted narrative. Richard Feldman does a great job interweaving the introduction of language features, community best practices and an incremental and iterative approach to building an app. Richard deliberately chooses the easiest solution to a problem at hand, based on the already familiar material, only to introduce a new language feature that would make the code cleaner, more readable and more robust. That makes the book so natural to follow. Brilliant! Little jokes sprinkled everywhere make the otherwise technical text entertaining.
Best introduction to Elm by Richard Feldman. You'll get your hands on several useful things like implementing custom elements, knowing how to talk with servers and JS through ports and correctly modelling data.