# purely functional programming language

> functional programming language that is isomorph to the lambda calculus

**Wikidata**: [Q28920201](https://www.wikidata.org/wiki/Q28920201)  
**Source**: https://4ort.xyz/entity/purely-functional-programming-language

## Summary
A purely functional programming language is a functional programming language that is isomorphic to the lambda calculus. These languages are based on mathematical functions and avoid changing-state and mutable data, making them fundamentally different from imperative programming paradigms.

## Key Facts
- A purely functional programming language is a subclass of functional programming language with a qualifier related to lambda calculus
- It is isomorphic to the lambda calculus, meaning it can be directly mapped to and from lambda calculus expressions
- Related languages include Idris (inception: 2007), Agda (inception: 2007), and PureScript (inception: 2013)
- It is also known by the aliases "pure functional programming language" and "pure programming language"
- The Rocq prover (inception: 1984) is a related proof assistant that operates within the functional programming paradigm
- Mercury (inception: 1995) is a functional logic programming language related to the functional programming family
- Clean (inception: 1987) and Miranda (inception: 1985) are earlier programming languages in the functional programming space

## FAQs
### Q: What makes a programming language purely functional?
A: A programming language is purely functional when it is isomorphic to the lambda calculus, meaning it's based entirely on mathematical functions without side effects or mutable state.

### Q: How does purely functional programming differ from other programming paradigms?
A: Unlike imperative programming that relies on statements that change a program's state, purely functional programming treats computation as the evaluation of mathematical functions and avoids changing-state and mutable data.

### Q: What are some examples of purely functional programming languages?
A: Notable examples include Idris (2007), Agda (2007), PureScript (2013), as well as earlier languages like Clean (1987) and Miranda (1985).

### Q: What are the advantages of purely functional programming?
A: Purely functional programming offers benefits such as easier reasoning about code, reduced bugs from side effects, better support for parallel and concurrent programming, and more predictable program behavior.

## Why It Matters
Purely functional programming languages represent a fundamental shift in how software is designed and implemented. By eliminating side effects and mutable state, they provide a more mathematical approach to programming that enables easier verification of correctness, better support for parallel processing, and more predictable behavior in complex systems. This paradigm has influenced modern programming language design and is particularly valuable in domains requiring high reliability such as formal verification, theorem proving, and concurrent systems. The isomorphism to lambda calculus provides a solid theoretical foundation that bridges practical programming with mathematical formalism.

## Notable For
- Being isomorphic to lambda calculus, providing a direct mathematical foundation for computation
- Avoiding side effects and mutable data, which distinguishes them from imperative programming paradigms
- Enabling formal verification of programs through their mathematical nature
- Supporting better parallelization due to the absence of shared state
- Influencing the development of modern functional languages and type systems

## Body
### Definition and Characteristics
A purely functional programming language is defined by its isomorphism to the lambda calculus, meaning every program can be expressed as a composition of lambda functions. These languages eliminate side effects and mutable data, treating computation as the evaluation of mathematical functions.

### Historical Context
The concept of purely functional programming emerged from lambda calculus, a formal system in mathematical logic introduced by Alonzo Church in the 1930s. Early implementations in programming languages began appearing in the 1980s with languages like Miranda (1985) and Clean (1987), which introduced purely functional concepts to practical programming.

### Related Languages
Several programming languages are related to the purely functional paradigm:
- Idris (2007): A dependently typed, purely functional programming language with proof assistant capabilities
- Agda (2007): A dependently typed, purely functional programming language and proof assistant
- PureScript (2013): A strongly typed language that compiles to JavaScript
- Rocq prover (1984): A proof assistant operating within the functional programming paradigm
- Mercury (1995): A functional logic programming language
- Charity (1992): A programming language with functional characteristics
- Joy (2001): A programming language based on function composition
- FAUST (2002): A programming language for signal processing
- Frege: A functional programming language
- SequenceL (1989): A general purpose functional programming language with auto-parallelizing capabilities

### Theoretical Foundation
The isomorphism to lambda calculus provides purely functional languages with a strong theoretical foundation. This mathematical relationship allows for formal verification of programs and enables reasoning about program behavior based on mathematical principles rather than execution state.

### Practical Applications
Purely functional programming is particularly valuable in domains requiring high reliability, such as formal verification, theorem proving, and concurrent systems. The absence of side effects makes it easier to reason about program correctness and enables better support for parallel and concurrent programming paradigms.

```json
{
  "@context": "https://schema.org",
  "@type": "Thing",
  "name": "purely functional programming language",
  "description": "A functional programming language that is isomorphic to the lambda calculus",
  "additionalType": "functional programming language"
}