Are you just getting started with functional programming? Or are you interested in using it in practice for web, development, enterprise applications, finance or data science? Here, you'll find our books and high-quality recordings of our talks.

Getting started with F# in practice

Functional programming languages are good at expressing complex ideas in a succinct, declarative way. Functional concepts such as "immutability" and "function values" make it easier to reason about code - as well as helping with concurrency. F#, LINQ, and numerous .NET libraries now bring the power of functional programming to .NET coders.

Materials in this section teach the ideas and techniques of functional programming applied to real-world problems. You'll see how the functional way of thinking changes the game for .NET developers.

Real-World Functional Programming

Tomas Petricek with Jon Skeet, Manning, 2012

Written by Tomas Petricek with Jon Skeet, this best-selling tutorial teaches the ideas and techniques of functional programming applied to real-world problems. You'll see how the functional way of thinking changes the game for .NET developers. Then, you'll tackle common issues using a functional approach. The book will also teach you the basics of the F# language and extend your C# skills into the functional domain.

"You will never look at your code in the same way again."
from the foreword by Mads Torgersen, C# PM, Microsoft

F# for Fun and Profit (e-book)

Scott Wlaschin

The e-book version of Scott's fsharpforfunandprofit.com web site. Perfect if you want to browse the site offline while commuting or on a flight. The site (and this book) aims to introduce you to F# and show you ways that F# can help in day-to-day development of mainstream commercial business software. On the way, I hope to open your mind to the joys of functional programming - it really is fun!

"The best teacher there is of functional programming concepts"
Larry O'Brien, founding editor of Software Development magazine

F# for C# Developers

Phil Trelford, NDC Oslo 2015

Everything you ever wanted to know about F# as a C# dev, but were afraid to ask.

The T in TDD: Tests, Types, Tales

Mathias Brandewinder, NDC London 2016

How types in F# changed the way I think about TDD and software development.

Domain modelling with the F# type system

Scott Wlaschin, NDC Oslo 2014

Using the F# types to make invalid states unrepresentable (and your code correct).

Domain Specific Languages, the functional way

Tomas Petricek, NDC Oslo 2014

Using simple functional concepts to build powerful DSLs for fun and profit.

Building stuff that works with F#

Tomas Petricek, NDC London 2016

Using F# for the boring things: testing, build scripts and documentation.

Machine learning and data science

Machine learning (ML) is becoming an extremely important topic and F# is the perfect tool for doing ML (not just) on the .NET platform. Books and talks in this category give you all the information you need to get started with using F# for data science and machine learning.

F# is a great fit for implementing your efficient own algorithms, but it can also access a wide range of powerful libraries including FsLab for data science, MBrace for extreme scalability and R through the R type provider.

Machine Learning Projects for .NET Developers

Mathias Brandewinder, Apress, 2015

The book shows you how to build smarter .NET applications that learn from data, using simple algorithms and techniques that can be applied to a wide range of real-world problems. You'll code each project in the familiar setting of Visual Studio, while the machine learning logic uses F#, a language ideally suited to machine learning applications in .NET. If you're new to F#, this book will give you everything you need to get started. If you're already familiar with F#, this is your chance to put the language into action in an exciting new context.

"Awesome read! The book explains ML concepts in a very easy and compelling manner, with great and well explained codes samples."    Amazon review by Terrell Bryonyq

Analyzing and Visualizing Data with F#

Tomas Petricek, O'Reilly, 2015 (free report)

In this report, F# contributor Tomas Petricek explains many of the key features of the F# language that make it a great tool for data science and machine learning. Real world examples take you through the entire data science workflow with F#, from data access and analysis to presenting the results.

You'll learn about how F# and its unique features ease the chore of data access, the process of data analysis and visualization, using Deedle, R type provider and XPlot and finally, implementations for a clustering algorithm using the standard F# library and how the F# type inference helps you understand your code.

F# and Machine Learning: a winning combination

Mathias Brandewinder, NDC Oslo 2014

Why choose F# if you are doing machine learning on .NET.

Mona Lisa, F# and Azure: simple solutions to hard problems

Mathias Brandewinder, NDC London 2014

Solving the traveling salesman problem using MBrace and Azure.

Understanding the World with F#

Tomas Petricek, Channel 9, 2013

Using type providers for JSON, CSV and XML for data analytics.

Crunching through big data with MBrace, Azure and F#

Mathias Brandewinder, NDC Oslo 2015

From explorative REPL to the cloud, using MBrace and the power of F#.

Analysing Big Time-series Data in the Cloud

Tomas Petricek, NDC Oslo 2016

Using BigDeedle, FsLab and MBrace to understand UK housing crisis.

Agile experiments in Machine Learning with F#

Mathias Brandewinder, NDC Oslo 2016

Kaggle case study on how "doing machine learning" workflow looks like.

Web development and cloud services

One of the myths about F# is that it is only good for complex mathematics. This could not be further from truth. A web server is essentially a function from a request to a response and so functional programming is a perfect fit for it.

Talks in this category cover some of the most popular F# tools for doing web development including the functional cross-platform web server Suave, but you can also learn about building and hosting cloud-based services on Azure.

End-to-end Functional Web Development

Tomas Petricek, NDC Oslo 2015

Building news site and chat using Suave, F#, type providers and agents.

The Great @fsibot Caper

Mathias Brandewinder, NDC London 2014

Building a cloud-based service that reacts to tweets using F# compiler service.

Celebrating New Year's Eve with F# and Suave

Tomas Petricek, F# eXchange 2016

Reactive web programming with New Year tweets as the data source.

Using F# in the enterprise & architecture

F# is a great language for developing enterprise applications in various domains including retail, advertising, finance and many more. The functional-first nature of the F# language leads you towards the "happy path" of correctness and extensibility.

The materials in this section provide all you need to build the right functional architecture. You can watch Scott Wlaschin's amazing series of talks on functional patterns or explore a number of case studies of using F# in the industry.

F# Deep Dives

Edited by Tomas Petricek and Phil Trelford, Manning, 2014

F# Deep Dives presents a collection of real-world F# techniques, each written by expert practitioners. Each chapter presents a new use case where you'll read how the author used F# to solve a complex problem more effectively than would have been possible using a traditional approach. You'll not only see how a specific solution works in a specific domain, you'll also learn how F# developers approach problems, what concepts they use to solve them, and how they integrate F# into existing systems and environments.

"Outstanding real-world examples that are sure to appeal to both the novice and expert."
Jeff Smith ITT Education Services

Railway oriented programming

Scott Wlaschin, NDC London 2014

Functional approach to error handling, input validation, logging and other annoyances.

F# for Trading

Phil Trelford, CodeMesh London 2014

What makes F# great for implementing high-performance trading systems.

Designing with capabilities

Scott Wlaschin, NDC London 2016

Using capabilities to design modular code that is easy to test and refactor.

Enterprise Tic-Tac-Toe

Scott Wlaschin, NDC London 2015

Practical enterprise-ready functional development, demonstrated using Tic-Tac-Toe!

Functional programming design patterns

Scott Wlaschin, NDC London 2014

Which OOP patterns are still useful? And what are new patterns that apply to FP?

Functional, compilers, performance & fun!

Do you want to learn more about functional programming and F#? Then the talks in this section are the place to explore! Learn about more advanced functional programming concepts (did we say monads?), techniques for choosing the right data structure, compilers, but also some of the powerful F# libraries like F# Formatting and the awesome tool for building presentations called FsReveal.

Dr Frankenfunctor and the Monadster

Scott Wlaschin, NDC London 2016

Warning! This talk contains gruesome topics, strained analogies, discussion of monads.

Literate_programming.With("F#")

Tomas Petricek, Lambda Days 2015

In this talk, Tomas describes how he built his slides using F#. As one does.

Write Your Own Compiler in 24 Hours

Phil Trelford, NDC London 2015

Compiler writers are often seen as the stuff of myth and legend. Unveil the reality!

Beyond Lists: High Performance Data Structures

Phil Trelford, CodeMesh London 2015

Selecting appropriate data structures is key to your application's performance.

Understanding parser combinators: a deep dive

Scott Wlaschin, NDC Oslo 2016

Implementing parser combinators from scratch and parsing JSON in 45 minutes.

Conferences and publishers

Over the years, we had the pleasure of speaking at a number of conferences and working with several publishers. If you are interested in meeting in person, you'll often find us at events organized by our partners listed here. Are you interested in having fsharpWorks experts at your event? Drop us an email to discuss what we can do for you!

Skills Matter Lambda Days NDC Oslo and London Channel 9 Apress Code Mesh Manning