Useful Links
Computer Science
Programming
Functional Programming
1. Introduction to Functional Programming
2. Foundational Concepts
3. Core Techniques and Patterns
4. Type Systems in Functional Programming
5. Advanced Functional Abstractions
6. Functional Architecture and Design
7. Functional Programming in Practice
8. Performance Considerations
9. Advanced Topics
10. Further Study and Resources
Foundational Concepts
Functions as First-Class Citizens
Assigning Functions to Variables
Passing Functions as Arguments
Returning Functions from Other Functions
Storing Functions in Data Structures
Function Equality and Identity
Pure Functions
Definition and Characteristics
The Problem of Side Effects
Idempotence
Determinism
Input-Output Relationships
Testing Strategies for Pure Functions
Higher-Order Functions
Definition and Usage
Common Higher-Order Functions
map
filter
reduce
fold
forEach
find
some
every
Custom Higher-Order Functions
Function Factories
Callback Patterns
Immutability
Immutable Data Structures
Lists
Maps
Sets
Trees
Arrays
State and Identity
Advantages of Immutability
Thread Safety
Predictable Behavior
Simplified Reasoning
Implementing Immutability
Copy-on-Write Strategies
Structural Sharing
Persistent Data Structures
Expressions over Statements
The Role of Evaluation
Expression-Oriented Programming
Everything Returns a Value
Avoiding Nulls
Option Types
Maybe Types
Safe Defaults
Null Object Pattern
Lambda Calculus
Syntax and Semantics
Role in Functional Programming
Church Encoding
Alpha Conversion
Beta Reduction
Eta Conversion
Evaluation Strategies
Eager Evaluation
Call-by-Value
Performance Characteristics
Lazy Evaluation
Call-by-Need
Infinite Data Structures
Performance Trade-offs
Call-by-Name
Implications for Performance and Semantics
Previous
1. Introduction to Functional Programming
Go to top
Next
3. Core Techniques and Patterns