Everipedia is now IQ.wiki - Join the IQ Brainlist and our Discord for early access to editing on the new platform and to participate in the beta testing.

# FP (programming language)

FP (short for function programming) is a programming language created by John Backus to support the function-level programming[2] paradigm. This allows eliminating named variables. The language was introduced in Backus's 1977 Turing Award lecture, "Can Programming Be Liberated from the von Neumann Style?", subtitled "a functional style and its algebra of programs." The paper sparked interest in functional programming research,[3] eventually leading to modern functional languages, and not the function-level paradigm Backus had hoped. FP itself never found much use outside of academia.[4] In the 1980s Backus created a successor language, FL, which remained a research project.

## Overview

The values that FP programs map into one another comprise a set which is closed under sequence formation:

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

is the undefined value, or bottom. Sequences are bottom-preserving:

FP programs are functions f that each map a single value x into another:

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 . Functions are strict:

Another example of a primitive function is the selector function family, denoted by 1,2,... where:

## Functionals

In contrast to primitive functions, functionals operate on other functions. For example, some functions have a unit value, such as 0 for addition and 1 for multiplication. The functional unit produces such a value when applied to a function f that has one:

These are the core functionals of FP:

## Equational functions

In addition to being constructed from primitives by functionals, a function may be defined recursively by an equation, the simplest kind being:

where Ef is an expression built from primitives, other defined functions, and the function symbol f itself, using functionals.

## FP84

FP84 is an extension of FP to include infinite sequences, programmer-defined combining forms (analogous to those that Backus himself added to FL, his successor to FP), and lazy evaluation. Unlike FFP, another one of Backus' own variations on FP, FP84 makes a clear distinction between objects and functions: i.e., the latter are no longer represented by sequences of the former. FP84's extensions are accomplished by removing the FP restriction that sequence construction be applied only to non-⊥ objects: in FP84 the entire universe of expressions (including those whose meaning is ⊥) is closed under sequence construction.

FP84's semantics are embodied in an underlying algebra of programs, a set of function-level equalities that may be used to manipulate and reason about programs.

• FL, Backus's FP successor

• PLaSM, FL Dialect

## References

[1]
Citation Linkweb.archive.orgThe Conception, Evolution, and Application of Functional Programming Languages Archived 2016-03-11 at the Wayback Machine Paul Hudak, 1989
Sep 22, 2019, 3:09 AM
[2]
Citation Link//doi.org/10.1145%2F359576.359579Backus, J. (1978). "Can programming be liberated from the von Neumann style?: A functional style and its algebra of programs". Communications of the ACM. 21 (8): 613. doi:10.1145/359576.359579. Backus' 1977 Turing Award lecture
Sep 22, 2019, 3:09 AM
[3]
Citation Linkwww.cs.cmu.eduYang, Jean (2017). "Interview with Simon Peyton-Jones". People of Programming Languages.
Sep 22, 2019, 3:09 AM
[4]
Citation Linkprog21.dadgum.comHague, James (December 28, 2007). "Functional Programming Archaeology". Programming in the Twenty-First Century.
Sep 22, 2019, 3:09 AM
[5]
Sep 22, 2019, 3:09 AM
[6]
Sep 22, 2019, 3:09 AM
[7]
Sep 22, 2019, 3:09 AM
[8]
Sep 22, 2019, 3:09 AM
[9]
Sep 22, 2019, 3:09 AM
[10]
Sep 22, 2019, 3:09 AM
[11]
Sep 22, 2019, 3:09 AM
[12]
Sep 22, 2019, 3:09 AM
[13]
Sep 22, 2019, 3:09 AM
[14]