This document provides an overview of functional programming languages. It discusses key concepts like mathematical functions, lambda expressions, higher-order functions, and referential transparency. Specific functional languages covered include Lisp, Scheme, ML, Haskell, and how each handles concepts like recursion, lists, and lazy evaluation. Haskell is discussed in depth through examples of functions, list comprehensions, and its ability to handle infinite lists through lazy evaluation. The document concludes by comparing the characteristics of functional and imperative languages.