The "Why use F#?" series

This series of posts will give you a guided tour through the main features of F# and then show you ways that F# can help you in your day-to-day development.

An overview of the benefits of F#
A very quick overview on how to read F# code
In which we attempt to sum the squares from 1 to N without using a loop
In which we see that F# is more declarative than C#, and we are introduced to pattern matching.
In which we see that F# excels at callbacks, and we are introduced to the 'use' keyword
The concepts that differentiate F# from a standard imperative language
Why is conciseness important?
How to avoid getting distracted by complex type syntax
No penalty for making new types
The functional approach to the DRY principle
Function composition and mini-languages make code more readable
Pattern matching can match and bind in a single step
Features that reduce programming drudgery and boilerplate code
Immutability and built-in equality with no coding
OO design patterns can be trivial when functions are used
How to fix some of a function's parameters
Dynamic patterns for powerful matching
How to write 'compile time unit tests'
Making your code predictable
A powerful technique to ensure correctness
In F# the type system is your friend, not your enemy
How to make illegal states unrepresentable
The next major revolution in how we write software?
Encapsulating a background task with the Async class
Making it easier to think about concurrency
Turning events into streams
F# is part of the whole .NET ecosystem
Some convenient features for working with .NET libraries
A whirlwind tour of object-oriented code in F#