**FP** (short for

**F**unction

**P**rogramming) is a

programming language created by

John Backus to support the

function-level programming paradigm. This allows eliminating named variables.

## Overview

The

**values** that FP programs map into one another comprise a

set which is

closed under

**sequence formation**:

if '''x'''<sub>1</sub>,...,'''x'''<sub>n</sub> are '''values''', then the '''sequence''' 〈'''x'''<sub>1</sub>,...,'''x'''<sub>n</sub>〉 is also a '''value'''

These values can be built from any set of atoms: booleans, integers, reals, characters, etc.:

'''boolean''' :
'''integer''' :
'''character''' :
'''symbol''' :

**⊥** is the

**undefined** value, or

**bottom**. Sequences are

*bottom-preserving*:

〈'''x'''<sub>1</sub>,...,'''⊥''',...,'''x'''<sub>n</sub>〉 = '''⊥'''

FP programs are

*functions* **f** that each map a single

*value* **x** into another:

'''f''':'''x''' represents the '''value''' that results from applying the '''function''' '''f'''
to the '''value''' '''x'''

Functions are either primitive (i.e., provided with the FP environment) or are built from the primitives by

**program-forming operations** (also called

**functionals**).

An example of primitive function is

**constant**, which transforms a value

**x** into the constant-valued function

**x̄**. Functions are

strict:

'''f''':'''⊥''' = '''⊥'''

Another example of a primitive function is the

**selector** function family, denoted by

**1**,

**2**,.........

Read More