Functional programming has been a darling of academia for some time. It has practical advantages over traditional coding in terms of code size, code safety and code correctness. With the release of F# for .NET, Microsoft has brought functional coding into the mainstream.
While there are more than a few books available on functional programming, most of them approach the subject from an academia, math-heavy, and theoretical perspective. Professor Kesselman avoids all that, instead giving practical examples and explanations of the mental tools necessary for working programmers to make the transition from procedural/object oriented programming to functional programming in F#.
The first half of the book explains the practical reasons for moving to functional programming and how to make that move. The second half of the book breaks down and explains a real-world example-- a modular 2D game engine written in F# that utilizes these techniques and is in active use today in the Purdue New Game Technologies Laboratory.

Jeffrey
Kesselman
Professor Kesselman is a 25-year veteran of the videogame industry and has held positions in game development companies ranging from tool engineer to Chief Technology Officer. He has contributed to games such as GEX, Titan, The Horde, Blazing Dragons, Duke Nukem3D, and Zoo Kingdom for Facebook and Civilization for Facebook.
He was a lecturing Java performance tuning expert at Sun Microsystems and co-wrote the best-selling book "Java Platform Performance: Strategies and Tactics." In that role he helped numerous enterprises solve their Java performance issues. He created and designed Project Darkstar at Sun Microsystems Laboratories, a near-real time server technology designed for game back-ends.
He holds a Master of Science in Emergent Media from Champlain College and a Master of Fine Arts from Florida Atlantic University. He has taught full-time at Worcester Polytechnic Institute and Purdue University. He has given more than a dozen talks at conferences such as Java One, The Game Developer's Conference, GDC-Austin, IBM SHARE, the Board Game Academics Conference, and M-Dev. He was a keynote speaker for the IEEE conference on Massively Multiplayer Virtual Environments. He is currently an Assistant Professor of Game Design and Development at Purdue Polytechnic.