15 comments

[ 32.1 ms ] story [ 657 ms ] thread
Also checkout Elm for Beginners which is free. Not sure if free offer is temporary.

http://courses.knowthen.com/courses/elm-for-beginners

And also checkout Elm in Action MEAP [0], published just yesterday. There is a coupon for 50% valid today, "mlfeldmantw" [1]

I'm not affiliated in any way, just a fan of Elm.

[0] https://www.manning.com/books/elm-in-action

[1] https://twitter.com/ManningBooks/status/756492787290214401

I'm intrigued by Elm, but know too little javascript to even be dangerous. Can you enumerate why you're a fan?

(I'm also a fan of MEAP's, so buying this just because.)

Elm's type system rules out the possibility of null or undefined. So you won't be seeing those errors at runtime (modulo some bug in Elm itself). It encourages you to program with a very clean separation between model, view, and update. And it has very helpful compiler error messages that guide you to correct code.
Functional data structures are another beast altogether. Okasaki's book is the only one I have on the topic. Any other suggestions?
CMU uses this for their Parallel Algorithm Design course: http://www.parallel-algorithms-book.com/ It's still a work-in-progress though.
It's a "work in progress" in the sense that the professors aren't quite completely satisfied with it. It's still very readable, which is even more impressive when you consider the complexity of the topics being covered.

If you're interested, I'd recommend at least glancing at the 15-210 schedule[1] so you can see the order that the chapters are covered in the class.

[1]: http://www.cs.cmu.edu/afs/cs/academic/class/15210-s16/www/sc...

No, none. That was the only publication on (necessarily) functional datastructures in the past 100 years. Maybe Turing and Church, but that's really it. Turing was especially explicit about keeping state (the notation) explicit.

Do you mean recommendations? I have none, but SICP, which you probably know. I liked the first chapter so far.

Also, see wiki (https://en.wikipedia.org/wiki/Purely_functional#External_lin...), and citations and similar articles for Osaki on google scholar. Personaly, I find the underlying theory about logics more interesting to begin with. ML was a script language for proof automation, in the bigger picture.

To hijack your thread: Seeing that OOP should be possible without side-effects, I find the distinction arbitrary. The basic structures are lists. Objects are often implemented with tables.

As a person who is finally getting time to read papers in this field, I came across a Stack Overflow post [1] about newer functional data structures recently when looking for papers to put on my kindle for a long trip. The top answer to it has a tonne of links.

Tangentially related, but I am currently reading Pearls of Functional Algorithm Design [2] - It is fascinatingly well written (though it isn't strictly about data structures only).

I plan to read Fun of Programming [3] next which has a chapter on binary heap trees by Okasaki but the rest of the topics aren't quite about data structures.

[1] http://cstheory.stackexchange.com/questions/1539/whats-new-i... [2] http://www.amazon.in/Pearls-Functional-Algorithm-Design-Rich... [3] https://www.cs.ox.ac.uk/publications/books/fop/

Thank you. These, and the other answers, are great links. The Pearls book seems the right thing to get you thinking functionally.
I can't seem to look at the notes (on mobile, or else clueless about where to find them) but there has been a significant change to how Elm does things in the past few months. Just to be aware that the latest version may act differently.
Yes! I applaud this attitude of Elm, of keep breaking the language to improve on it (It still hasn't reach 1.0).

It has the disadvantage of breaking previous code and making previous learning resources obsolete, but on the other hand, the language keeps evolving and improving.

There's an article on why they changed from signals to commands/subscriptions. They argue that this change was needed, as signals was a concept that was hard and could be make unnecessary by the new system, which was easier.