Thursday, January 20, 2011

F# Books: a tough language to tutorialize produces a veritable flood of excellent books

Of the 8 or so recognizable name FP languages (3 lisps, scala, erlang, haskell, F#, ocaml), F# has been gifted with, to date, 6 excellent books. I own and have read most of

- Chris Smith's Oreilly
- Expert, by Syme, Granicz and Cisternino
- Wrox, Pro F#, by Neward, Erickson, Crowell, Minerich

I've read much of Pickering, Harrop (F# for Scientists) and Ptacek/Skeet's books in Borders, as well. All top notch, and Dr. Harrop has an updated "F# for Technical Computing", which i have no doubt is also excellent.

Scala has gotten a lot of "too complex for most programmers" flack. F#, to date, has never been critized thusly, but there's a lot of syntax there. Like scala, it has to support the full o-o capabilities of a big sibling o-o language (C#, java). F# must also support all the 3 and 4-letter .NET acronyms past and present (WPF, WCF, ADO.NET), unmanaged assemblies (C++) and there's a decent number of syntax remnants of the pre- "#light" (OCaml) syntax.

So the Expert book by Syme et al. is comparable in scope and depth of material to the Wampler / Payne Scala book. Both are dense, efficient, and extremely carefully and clearly written expositions of a *lot* of syntax. (The Wampler / Payne book also has frank discussions of the 2.7 compiler's shortcomings, most of which were fixed in 2.8.0. The Wrox book has similar discussions of silent failures and things you would rather not see from fsc and fsi)


Smith's OReilly book is a gentle introduction similar to Subramaniam's Pragmatic Scala intro. Both are invitations to learn enough of each language's syntax that you can open the REPL and IDE and start coding something useful and interesting. As my Amazon review of the Scala says, the aim is to teach +/- 1 sigma of what you need to be a productive dev in the respective languages. So those, plus Ptacek/Skeet book are the best jumping off points.


Then what? You could buy the Pickering, Neward et al. and Syme et al. books, and start reading 2 of them concurrently, matching up what they say and omit. That could be instructive, or confusing.


Aside about Apress, since they're 1/3 of the population under scrutiny. I've heard from one author, and seen discussions on the tubes by others, that they're not like Oreilly, Pragmatic, Manning as far as copy editor and proofreading support (They usually have solid technical reviewers, but they don't have gazillions of people reading MEAPs/pre-pub drafts, like Pragmatic and Manning). And they don't put the current books for previewing in Google books. And once in a while, they make a goof like the Ocaml book or the Lift book (I suspect what happened was Apress decided to send manuscripts to the printer without telling the authors).