The "Thinking functionally" series
This series of posts will introduce you to the fundamentals of functional programming – what does it really mean to “program functionally”, and how this approach differs from object oriented or imperative programming.

1. Thinking Functionally: Introduction
A look at the basics of functional programming 
2. Mathematical functions
The impetus behind functional programming 
3. Function Values and Simple Values
Binding not assignment 
4. How types work with functions
Understanding the type notation 
5. Currying
Breaking multiparameter functions into smaller oneparameter functions 
6. Partial application
Bakingin some of the parameters of a function 
7. Function associativity and composition
Building new functions from existing ones 
8. Defining functions
Lambdas and more 
9. Function signatures
A function signature can give you some idea of what it does 
10. Organizing functions
Nested functions and modules 
11. Attaching functions to types
Creating methods the F# way 
12. Worked example: A stack based calculator
Using combinators to build functionality