Expert F# now available, really!

Expert F# Front CoverThe book Expert F# is now available from book sellers! It’s been shipping for a while, but there were some early reports of delivery delays so I delayed in announcing it.


As regular readers will know, the book is by myself, Adam Granicz and Antonio Cisternino. It offers a single resource to learning the 1.9.3 release of the language from Microsoft Research and is suitable for anyone with experience of either an existing functional or object-oriented language. It can be used as an introduction about to how to use functional programming techniques in conjunction with .NET, even if you code in C# or other .NET languages. It also contains a range of topics that will be of interest to anyone who enjoys their programming.


There will be an active errata: please notify us if you would like to add material to this. We’re still to post some of the additional web-based material to , but you can already get all the code samples there and the extra material will come.


Some reviews have begun to appear, and we’re looking forward to your feedback.  One review was written by my friend Brian Beckman but for some reason Amazon haven’t posted it yet. Anyhow I’ve included it below – thanks Brian!

I tend to like books that teach something deep about programming, and just happen to be in some programming language or other. My all-time favorites are “Structure and Interpretation of Computer Programs,” (SICP) by Abelson & Sussman; and “Introduction to Functional Programming (1st Ed.),” (IFP), by Bird and Wadler. Anyone who has had the privilege of reading these comes away with a lifetime supply of powerful insights. The first happens to be in Scheme, and the second happens to be in Miranda, but the languages merely serve the teaching, and the teaching transcends the languages.

This book is in the same class. Every page is packed with real code that begs to be keyboarded in, studied, tweaked, played with, and internalized. Most of the samples are short, accessible representatives of much larger whole classes of techniques, like parsing with combinators, or symbolic differentiation, or monadic disciplining of side effects, or metaprogramming (with and without reflection), or dispatch-on-type in a number of interesting variations. As such, they entice the programmer to dig much deeper.

F# is a unique and audacious experiment. It attempts to bring together things that are about as different as can be: object-oriented programming and functional programming. It builds on another audacious effort: .NET, which aims to provide a permanent foundation for object-oriented programming. When .NET was created, functional programming was not in the scope of the effort, so little support was built in. Subsequent successes of Haskell, OCaml, Erlang, and others, plus the now-obvious demands of parallel and distributed computing, changed the landscape. F# is a bold statement that “we can have the best of both worlds.”

One should realize that learning .NET is a huge task on its own. Learning the functional style is challenging on its own because it is so different from the “ordinary” techniques one learns in BASIC, All The C’s, Java, and so on. F# is a large language comprising multiple schools of programming and dozens of partially overlapping feature sets. But there is a way to make sense of it all, to make it sufficiently logical and consistent for human comprehension. This book will give you your best shot at it. It’s a permanent member of my bookshelf.


Comments (5)

  1. skline says:

    I’m really enjoying the book. You and the other authors did an excellent job of providing both a clear and in-depth presentation of the material.

  2. Josh Smith says:

    Hi Don,

    Congratulations on getting your book on the shelf.  I’m looking forward to reading it.  A while back I dug into F# to explore how it could be used with WPF, accompanied by Robert Pickerings book.  I eventually abandoned the effort because I felt that F# is not yet integrated enough with Visual Studio to make it a viable language option for most "normal" developers.

    Ever since then I keep hearing that MS intends to make F# a first-class .NET language.  When can we expect to see the rich VS integration that F# needs to be considered, by most devs, more than a strange curiosity?  Has MS released any public statements in this regard?



  3. Hi Don,

    I started reading ‘Expect F#’ – the only concern is that the example source files are not available for download as a single ZIP file.



  4. David Thayer says:

    I really enjoyed you book and have tried many of the samples.  It is a great disappointment however to go to the accompanying web site and not find the additional material promised in the book on a variety of subjects.  Do you know when this material may be available?

    Thanks Dave