# F# for Fun and Profit eBook

This is an eBook version of my site fsharpforfunandprofit.com, created by popular request for people who want to read it offline on their kindle or phone. Special thanks to Roman Provaznik for the final nag.

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!

Many of the posts were not really designed to be in a book, but I have arranged them so that beginner posts come first, and more advanced posts later.

## About F#

If you are completely new to F#, F# is a general purpose functional/hybrid programming language which is great for tackling almost any kind of software challenge.

F# is free and open source, and runs on Linux, Mac, Windows and more. To download and install F#, or to find out more, go to F# Foundation site at fsharp.org.

## Getting started

Next, before randomly dipping into the posts, you should read the "why use F#?" page and then the whole "why use F#" series. After that the "site contents" page provides suggestions for further reading on functions, types and more.

There is a page with some advice on learning F#, and if you have problems trying to get your code to compile, the troubleshooting F# page might be helpful.

I will assume that you do not need instruction in the basics of programming and that you are familiar with C#, Java, or a similar C-like language. It will also be helpful if you are familiar with the Mono/.NET library.

On the other hand, I will not assume that you have a mathematical or computer science background. There will be no mathematical notation, and no mysterious concepts like "functor", "category theory" and "anamorphism". If you are already familiar with Haskell or ML, this is probably not the place for you!

Also, I will not attempt to cover highly technical or mathematical applications. F# is an excellent tool for these domains, but it requires an approach that is different from business software.