hidden pixel

Formal Fp Information

FP (short for Function Programming) is a programming language created by John Backus to support the function-level programming paradigm. This allows eliminating named variables.

Contents

Overview

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

if x1,...,xn are values, then the sequencex1,...,xn〉 is also a value

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

boolean : {T, F}
integer : {0,1,2,...,∞}
character : {'a','b','c',...}
symbol : {x,y,...}

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

x1,...,,...,xn〉 = 

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

f: = 

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

1:〈x1,...,xn〉 = x1
i:〈x1,...,xn〉 = xi if 0 < i ≤ n
= ⊥ otherwise

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:

unit + = 0
unit × = 1
unit foo = ⊥

These are the core functionals of FP:

composition f°g where f°g:x = f:(g:x)
construction [f1,...fn] where [f1,...fn]:x = 〈f1:x,...,fn:x
condition (hf;g) where (hf;g):x = f:x if h:x = T
= g:x if h:x = F
=  otherwise
apply-to-all αf where αf:〈x1,...,xn〉 = 〈f:x1,...,f:xn
insert-right /f where /f:〈x〉 = x
and /f:〈x1,x2,...,xn〉 = f:〈x1,/f:〈x2,...,xn〉〉
and /f:〈 〉 = unit f
insert-left \f where \f:〈x〉 = x
and \f:〈x1,x2,...,xn〉 = f:〈\f:〈x1,...,xn-1〉,xn〉
and \f:〈 〉 = unit f

Equational functions

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

fEf

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

See also

References

Categories: Academic programming languages | Function-level languages

 

The above information uses material from Wikipedia and is licensed under the GNU Free Documentation License.
Some facts may not have been fully verified for accuracy. [Disclaimers]
This page was last archived by our server on Mon May 30 03:54:24 2011.
Displaying this page or its contents does not use any Wikimedia Foundation's resources.
The owners of this site proudly support the Wikimedia Foundation.