Author: Robert Pickering
Aimed at: Intermediate programmers
Pros: Concise summary of F#
Cons: Not strong on functional programming
Reviewed by: Mike James
This claims to be a beginner's book but its approach and language are generally too sophisticated for a complete beginner.
It follows a fairly standard route to introduce the F# language - first install the software and then learn about literals, functions, bindings and so on. If you don't already know another programming language then all of this is going to mean nothing to you. If you do then it's a fairly quick introduction to F#.
The author takes the view that F# is multi-paradigm and presents a section on functional programming, then one on imperative and object-oriented programming. ending with language-oriented programming. The big problem is that what is going to be novel to most programmers is the idea of a functional approach and this section doesn't really manage to convey the flavour or the style of thinking typical of the approach.
It explains immutability, recursion and the usual techniques with functions and lists but it never really manages to explain how to implement an algorithm in functional form. It doesn't really explain the tricks that allow a function to implement what is essentially a loop.
The author doesn't really discuss the all important functions that allow functional programming to implement the loops and conditional that are the standard techniques of imperative programming. What this means is that by the end of the material on functional programming the reader is unlikely to have made the transition to thinking functionally even though they will have encountered most of the mechanisms involved.
Once you have moved away from F#'s functional facilities you are arguably dealing with well known territory. In this case the book deals with the topics reasonable well but it still doesn't inspire. However it is in this part of the book that you are likely to find useful material by way of explanations and examples.
Overall this is a very standard approach to explaining a language and as such it might suit you if you already know another language and just want a quick introduction to F#.