This document discusses functional programming and provides examples in Haskell, F# and C#. It begins with an introduction to the author and their background in functional programming languages like Prolog, Haskell and F#. It then covers various functional programming concepts like recursion, pattern matching, avoiding side effects, strong typing and type inference. Examples are provided for sorting lists, calculating factorials and other common functional programming tasks. The document emphasizes the declarative nature of functional programming and compares approaches in Haskell, F# and C#.