Please note that the content of this book primarily consists of articles available from Wikipedia or other free sources online. Pages: 121. Chapters: Binary search tree, Functional programming, Reverse Polish notation, Polymorphism in object-oriented programming, Burrows-Wheeler transform, Absolute value, Nim, Hamming distance, Numerical integration, Prototype pattern, Observer pattern, Iterator, Python syntax and semantics, Function object, Cycle detection, Duck typing, List comprehension, Multiple dispatch, Array slicing, Immutable object, Mutator method, Foreach, Fork, PyQt, Binary logarithm, Generator, Chain-of-responsibility pattern, Metaclass, CherryPy, Corecursion, While loop, Set-builder notation, Luhn algorithm, Uniform access principle, One-liner program, Comparison of programming languages, Doctest, Hello world program examples, Lanczos approximation, Parallel array, SEDOL, Threaded binary tree, Aggregate pattern, Kid, CherryTemplate. Excerpt: In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state. Functional programming has its roots in lambda calculus, a formal system developed in the 1930s to investigate function definition, function application, and recursion. Many functional programming languages can be viewed as elaborations on the lambda calculus. In practice, the difference between a mathematical function and the notion of a "function" used in imperative programming is that imperative functions can have side effects, changing the value of program state. Because of this they lack referential transparency, i.e. the same language expression can result in different values at different times depending on the state of the executing program. Conversely, in functional code, the output value of a function depen...