Function Programming Paradigm For Strangers

I have been programming for a very long time. Usually a mix of Imperative and Object Oriented programming. Then I learned about Functional Programming and I got hooked to it. So what is Functional Programming ? FP always intimidated me due to the steep learning curve and the mathematical knowledge required to understand it. But couple of years back I decided to give it a shot and I loved it. Function Programming is notorious for not being beginner friendly. But in my opinion it is the unlearning of other programming paradigms that making FP harder to grasp.

Huge reason for me exploring FP was Emacs. I migrated from Neovim to Emacs in 2024. Initially I used small configurations that I copied from others. But eventually I decided to learn Lisp which is Functional Programming language and that led me to explore FP.

Purest form of programming

Functional Programming is a concept came from a mathematical branch "Lambda Calculus". This branch is way older than any programming languages. But to put it easily, both Lambda Calculus and FP is all about expressing computations in terms of pure functions. Functions - In OOP we use Classes and Objects to represent entities and define methods on top of the objects to implement computations and change the state of objects. In Imperative programming we write intructions to mutate states and do computations. In FP we write functions to do the computations. We call this functions pure because the functions should not have any side effects. The idea is that function will always return the exact result back for the same arguments. And instead of mutating the existing data, it will return new variable with result. So pure FP uses immutable data structures. This is really important in software readability and testability. So FP is all about functions and we build programs by composing functions. And functions can be bound to any variable and can be passed around. This will force us to write very reusable functions that can be used to compose different algorithms.

Lisp

Date: 2026-05-04