|
|
|
|
FP programming language
|
| |
|
| |
FP (short for Function Programming) is a programming language created by John Backus to support the function-level programming paradigm. This allows for the elimination of named variables.
boolean :
integer :
character :
symbol :
? is the undefined value, or bottom.

Discussion
Ask a question about 'FP programming language'
Start a new discussion about 'FP programming language'
Answer questions from other users
|
Encyclopedia
FP (short for Function Programming) is a programming language created by John Backus to support the function-level programming paradigm. This allows for the elimination of named variables.
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 sequence <x1,...,xn> 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:
<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 x¯. 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°gwhere f°g:x = f
construction [f1,...fn] where [f1,...fn]:x = <f1:x,...,fn:x>
condition (h ? f;g) where (h ? f;g):x = f:x if h:x = T
= g:x if h:x = F
= ? otherwise
apply-to-all af where af:<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:
f = Ef
where E'f is an expression built from primitives, other defined functions, and the function symbol f itself, using functionals.
See also
|
| |
|
|