Core Functional Programming Concepts
Found this introductory post on
Functional programming
In computer science, functional programming is a programming paradigm where programs are constructed by applying and composing functions. It is a declarative programming paradigm in which function definitions are trees of expressions that map values to other values, rather than a sequence of imperative statements which update the running state of the program.
dealing with the subject succinctly.
It is easy to approach functional programming, if we can recognize the following concepts held true by all the
functional programs, and languages facilitating them.
-
Functions are Pure
No side-effects, like printing something from the function.
When called with the same input, will always return the same output. We take that for granted, isn't it?
-
Functions are first-class and are of higher order.
Treat function names as variables.
Toss function (names) as an argument to a function, and as a return value from a function.
-
Variables are immutable.
Forget mutating variables in a program. If you want an updated value, create a new variable. When you are getting started with programming, you feel this is questionable. With experience under your belt, you start to prefer immutability of variables.
-
Functions have referential transparency.
It follows from functions are pure requirement. The referential transparency requirement is about substituting the function call with return value, wherever the function is called, should not change the state of the program.
-
Lambda Calculus
The mathematics behind functional programming. Take arguments and have a return valued. When evaluating multiple arguments, the function is evaluated one argument at a time, with result send to next one-arg-less function, kind of a tail-recursion. This concept is called currying.