# **🌿 Exhibit: Functional Programming (FP)**

Functional Programming treats computation as the evaluation of mathematical functions and avoids changing state or using mutable data. It is modeled on ![][image1]**\-calculus** (Lambda Calculus), a formal system developed by Alonzo Church in the 1930s.

## **📐 Mathematical Foundations**

Unlike imperative programming, which relies on execution steps that alter global memory state, Functional Programming relies on pure mathematical mappings.

### **1\. Pure Functions**

A function ![][image2] is considered **pure** if and only if it map inputs to outputs without modifying any state outside its local environment:

![][image3]Where ![][image4] represents the set of environmental side effects (such as modifying global variables, standard output, or writing to disk). If ![][image5], the function is impure.

### **2\. Referential Transparency**

If a function is pure, any expression containing it can be replaced with its evaluated result without changing the program's behavior:

![][image6]This algebraic predictability makes functional programs highly testable, thread-safe, and perfect for massive mathematical scaling.

## **🔑 Core Pillars of FP**

* **First-Class & Higher-Order Functions:** Functions are treated as variables. They can be stored in data structures, passed as arguments to other functions, and returned from functions.  
* **Immutability:** Once a variable is created, its value cannot be modified. Instead of altering a list, you construct a new copy with the required changes.  
* **Recursion:** Without mutable variables, traditional loops (for, while) are impossible because they require changing loop counters. Iteration is instead modeled using recursive functions.  
* **Declarative Code:** FP focuses on *what* to calculate rather than *how* to calculate it step-by-step (e.g., using map, filter, and reduce structures instead of manual nested loops).

## **🏛️ Historical Museum Tour**

Trace how Functional Programming evolved through the museum's historical booths:

### 1. The Pioneer: [Lisp (1958)](../eras/Hall%20of%20Pioneers%20%281950s%20-%201960s%29/Lisp.md)

John McCarthy’s Lisp introduced functional concepts to programmers. Lisp represented everything as lists, utilizing recursive traversal algorithms to compute structural lengths and filter elements. It introduced the first-class anonymous function (![][image1]\-expression) to software development.

### 2. Dynamic Functional Expressions: [Ruby](../eras/The%20Web%20Boom%20%26%20Dynamic%20Runtimes%20%281990s%29/Ruby%20Booth.md) and [JavaScript (1995)](../eras/The%20Web%20Boom%20%26%20Dynamic%20Runtimes%20%281990s%29/JavaScript%20Booth.md)

The 1990s Web Boom brought functional design patterns to the mainstream:

* **Ruby** leveraged the concept of code blocks (yield) to allow methods to execute custom procedural logic on the fly.  
* **JavaScript** popularized dynamic first-class functions and lexical closures, allowing functions to carry their local scope around asynchronously.

### 3. Modern Type-Safe Pipelines: [TypeScript](../eras/The%20Modern%20Era%20%282010s%20-%20Present%29/TypeScript%20Booth.md) and [Swift (2014)](../eras/The%20Modern%20Era%20%282010s%20-%20Present%29/Swift%20Booth.md)

Modern languages merge strong type systems with functional design. Swift uses Optionals and strict value types to guarantee compile-time safety, proving that functional pipelines can prevent fatal runtime errors.

## **🎨 Paradigm Showpiece: The Transform Pipeline**

Let's look at how the functional pipeline maps mathematical transformations elegantly without mutating variables. Compare this to traditional looping:

### **![][image7]Example in JavaScript (First-Class Composition)**

const numbers \= \[1, 2, 3, 4, 5, 6\];

// Pure, isolated lambda operations  
const isEven \= (x) \=\> x % 2 \=== 0;  
const square \= (x) \=\> x \* x;

// Declarative pipeline composition (no loops, no mutations)  
const processedNumbers \= numbers.filter(isEven).map(square);

console.log(processedNumbers); // Output: \[4, 16, 36\]  
// Original array 'numbers' remains completely untouched\!

Turn around and explore the [Object-Oriented Programming guide](OOP%20Paradigm%20Guide.md) or check the [Low-Level Paradigm Guide](Low-Level%20Paradigm%20Guide.md).

[image1]: <data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAaCAYAAACD+r1hAAABSElEQVR4XnVUO07EMBBNACHR0NIEf5KIIg0IJKRtaKHgCDTcgWNwCrrtuQMdokDaA0BHg7QS7fLGnl3bE8+TnLHfe2OP7SRN22QIgzaGXSy1ElWSUOMA7/113/dn6O7vSMXbTNN0aK39QNugrcqSZFabKOf8kpJ2jPRKGGOvDBK6rjsqBHkC+fJIWBljHjKHAs7qh+GUyhoQZzPPu3Gz1hra/JO6h8DzI0t4z1QNUeSEjXPuoiKnCNMC7Qendc938t3QRaYSUnTe3cHw551bYriH/hevciu99FrcWGPXKOWVbp04mJ95lRe2JYD8Rfscx/F4y2GSc05YR4anB/GGdrk15iLKeaQDQPcgcER7508KbwC/fG04sUXsKSj2Jzc7h64oWvoOqnKAruhaqjc5NG+A8IZBNaFKBghFzjhPrP2XspgjcqwIwz+VZTQAtYUGrwAAAABJRU5ErkJggg==>

[image2]: <data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGEAAAAaCAYAAACn4zKhAAAEjklEQVR4XtWYW4hNURjHz3HPpdzGaC57n5kzmpoH0ZRbQlJq4kGueXGP5kGJlDwqkUguRVIu5cHD4MFQUgopRSlMRIpMJoXU8CDx/85e+5y1v73W2mvvs7cxv/o6Z333tda+rHNyuQD54DCSOP6yr02cjY+g5Grrr/ZTa6NJGmeAUprSmmyDkKjpSli6GRy1BoHG3traOs513c2O4yznNls0qSsGrQMRNoY10SSJkclXnSEhTU1NtdiA547jXsDnG27nmNrU2bC5B5H7DpObMOVp47mtUChs4Dm0xLjKbcGauK4T6pdkq+yH8fqA3XGvyHZrEHwVk35MBSB/uD0NMKnpyL2CalENyHnUnEG2+vr6Sfh+XOjfuY6zrKWlpYbnyAT95g1Bz7PQTwekD/IKPa4rFotTZCfosVvuNchl2Dc2NjYWZbs1YvLHcEWuxmcvt5vQz0ENmqzD1UL1Tvg6ND8K427Ipbq6utEV7+js0R4y8bx90NdpyFfqk9va2tpGwPaQ6y0INkObgALbA8oMEZv+pba2dowY0wZ04etQ5vrPUb0TcEcsEGu0lpmGQneR7gCmF4RzacHD73dNTc1YrtcSI7cKTOiF2IgHmMAhupo8S5WJc/oMtFi405dwvZpwFtHvz0KhaTyNkWsvxo/w2BypcLcDCXaLxAFB8gvclwO/l5Ce5uZmh9tsQI2dfj16F4UmwccpgDqLUPc613N0pXGh+v1uojFyvS8Wmxu5nxJdUh8kXYjk1m90yictYKmhoFU/9EHceMT/EHmOcruSvDadNah1Dou3hus9zNkR+0z0exf9Ly2IQ0UCwoWQtBMJ9/njsEcYxHSRNDQ0TOQ2GxA7D9LveJP6WFLKhQNN2HSk9uLPd3rpYxNu0wFEGWAAfe4Xm0DygdurAgmf4Nhld1slIjhbbNw0LMJ8+o7aD2lSAYcy5lVC3Hk3fIa3E8f9hM/TpRKKMgpVDhfMYtfbgP7SeyAt2tvbhyPpL67PCjqe4q577Y9RewtNDJvSJvuZUS2RBSIMtVa5CY6UiDlAvaL/G9wWk+AEkHAOJQ4ojSRcgFzpUTDZ9U5Fnb6OjqgYf4MckX3jE9WXZ0edlZDuJFcy4u7TWkH2cFtVYBN26DdBmhibI66mM4g965/zo6DjL119dDVxG3Qncav3VY6p8YnaAkIcBt6g9wncZgNif9FaIc9sGpdr2hQ3UfD+qqg8jiwTOt6z9Z7uxeynEQtPV09ZUHOq74dxr/j1XBabI3ISkPsp+q3nehnV9BH3mc8B8p37mVFlzlXeB5Bb3JYJmj581Ga11sNkC4N5zuW6EIqUYVVYEwsRPgwNzaSmaFdx5W0LelVdpkxaefRkXyET8Dg4jMXvxucuPAreBv8wM8Dny8eMfIQ9iirDU0LuIsWOsAGn8BOc/rLugXRwe/akOJkq0XYiGbyvWs8glm6ZEWg2ZjMV95iBqaKprVETBtN/hLJLpVJgsmXMAJYu4/cQq5dYzoOfwT/d/20GafVTzpMgYYKQClUFK0g7nwnplk+/bMKMCcNikVaNtPIMJH8BmL8BnEtjWgUAAAAASUVORK5CYII=>

[image3]: <data:image/png;base64,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>

[image4]: <data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAaCAYAAACO5M0mAAABFUlEQVR4Xn1QQW7CQAxMWiRULr1WKbG9NPdyge/0A/yltx6qSkhcEGdOCB5SCXHiBX1ABd4lznoTh5ES745nxitnmUce/jX0Rc6JwLh7BM40WGrBvV4CK7E9LWpyO1neaPUCkiQRpvGDsixn43L8WrO6dwMgLBHxBIg/XFcAsOu80Tk35+Z3VVVDMfJ9LecgJEcviHDmcU+qMWDhIaqy7BEB/5i88LcHwB3XL0du3pg8HHEaBNH/jenZQ1EUozrtt0/TmDnxyG88yq5ET+Sm9TEOIqIPXs8n1w2vZ8vmBdMPxpTcr+h9Mnl71lxTo6FrDVBa/VNVI0mMZJcT9HZUI5kamTtmD920zClabzQvvYmClssKuQL1DyHOZP/fdAAAAABJRU5ErkJggg==>

[image5]: <data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC8AAAAaCAYAAAAnkAWyAAADa0lEQVR4XtVWTYhOURj+zihiYRpJ5uu793x/xNSUZMGCUnZSlKUpSTZTkrLQNJQFyk9kIzGKjd+NmiwmKUXKxMbsRsrEQlmizOLzvPece+75vd+5YeGpt3PO+z7ve55z5r3nm1qtDMx2xCIusZRVGlTws/zeGFTJlNxAiuN2HH8Eq1qgeLPZ3Ntut9fb/lBCvV5fwTk/AXsMu5Ry/lxE/PwCpfHSoIaCR0Kw+VyapkMaoQAr2DS2Wi3o5fOwu8jZg3E3HUJPCSBWXAEnQxNDgIBTsNOaq6YYGjGfQuhLztObRSTzfYft030BOHIyKK8/HAQ2XWi3O4O2X8AtBn4vSZItNKdoo9FYBd812Htauxn/APkm6PeTrjcMiFzsdrvL8nWa8jH4DstDdRRRL6XdLMNpR52N+u7LnDbAhpcjEg0gZ05Xg/XnpJFsJ/G4iKuKqJdFnw0heIWLj+Wh6D2+zUv2rS0gdxj20fb3wQBy3uWLVqu1A5qewLcZH30P45ROVkDgC2xavAqMPrSjXD1RfqDgBDiTwlI5KqPDP7V8k2WnxnM6CM6bfA3h57Eex7iJC/EPCrasQ4IR+AEb1nznsL5ocs2NeS4+lSYFytxv6NEzunAyo4CCqIteXwnObO7F/C1aeB19wFy0zX1TA8v66ivsFWyGDJvfzoP64MINYIO1qDGPTZcLj8vx+wSQu0AjNBzB/IL07STx8J01yPLWe51OJzECsbB00HcDO+aLxQDttyhG/ohE05x+oeXNH8x5jIqPjIwsRUIvd+Yh49YDItDzv6hodity9JmKpdzaxwXx6F8JXOonbLtE+sazOmnadqTw7HkygZ/11fBP9O0cBUaHuUF/bs0VgBVgxVqKvI7xjua7BfsguIpaALc/K5OmIGKaPh6bUwqWteCY7a4K+eL8RIu8QL39mB+nVqxZsp0zgLgRvb/G9pdCVsEGG7AYMIMmnA09oNcFOp5J4fRCHbI5qlA2xlRV0MnFHJvd0wIVa9YUH3V2wQ6YwQqgOlX2biSNUdzQa9svoFUzhwBEtJwThexBKgfL2m0GbbPVDv2X6HvgyoioGEFR0LmhvJD/78CoHiOnHGZWsaJZlYqK65Nkao4rG8WKIvkQkxjDCSGYGwxoYCV3FAwEIn6vBhb4M4URSStHZBFBY7XfnAOume2q6W8AAAAASUVORK5CYII=>

[image6]: <data:image/png;base64,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>

[image7]: <data:image/png;base64,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>