FP (abreviación de Functional Programming) es un lenguaje de programación creado por John Backus para apoyar la diseminación del paradigma de Programación a nivel funcional.

Componentes del lenguaje Valores Las principales estructuras de datos del lenguaje son los valores de base y las secuencias:

Si x1,...,xn son valores, también lo es la secuencia 〈x1,...,xn〉.

Estos valores se construyen a partir de cualquier conjunto de valores atómicos: booleanos, enteros, reales, caracteres, etc.

booleanos : {T, F} enteros : {0,1,2,...,∞} caracteres : {'a', 'b', 'c',...} símbolos : {x, y,...}

El símbolo ⊥ representa el valor indefinido. Las secuencias preservan el valor indefinido:

        〈x1,...,⊥,...,xn〉 = ⊥

Funciones Los programas en FP son funciones f tales que cada una hace corresponder un valor x en otro :

f:x representa el valor resultante de aplicar la función f a x.

Funcionales Las funciones pueden estar predefinidas o ser definidas según las operaciones de construcción de programas o funcionales.

Algunas funciones tienen elemento neutro, tal es el caso del valor 0 para la suma, o 1 para la multiplicación. El funcional unit produce ese valor al ser aplicado a una función f que posea elemento neutro:         unit + = 0         unit × = 1         unit foo = ⊥ si foo no posee elemento neutro.

Los principales funcionales de FP son:

constante x̄:         x̄:y = x para todo valor y (exceptuando el valor indefinido, ⊥, cuyo resultado es él mismo cualquiera sea la función aplicada).

composición f°g:         f°g:x = f:(g:x)

construcción [f1,...fn]:         [f1,...fn]:x = 〈 f1:x,...,fn:x 〉

condición (h⇒f; g):         (h⇒f; g):x = f:x si h:x = T,         (h⇒f; g):x = g:x si h:x = F, y         (h⇒f; g):x = ⊥ en caso contrario.

aplicar a todos o map αf:         αf:〈x1,...,xn〉 = 〈f:x1,...,f:xn〉

inserción a la izquierda /f:         /f:〈x〉 = x,         /f:〈x1,x2,...,xn〉 = f:〈x1,/f:〈x2,...,xn〉〉,         /f:〈 〉 = unit f

inserción a la derecha \f:         \f:〈x〉 = x,         \f:〈x1,x2,...,xn〉 = f:〈\f:〈x1,...,xn-1〉,xn〉, y        \f:〈 〉 = unit f

Recursión

Para introducir la recursión en el lenguaje se utilizan ecuaciones en donde la función que se define aparece tanto a izquierda como a derecha. La forma más sencilla es:         f ≡ Ef en donde E'f es una expresión construida a partir de otras funciones y el símbolo f combinadas con los funcionales del lenguaje.

Primitivas Por ejemplo, las funciones de selección, que se denotan en FP con los símbolos 1,2,... corresponden a la siguiente especificación:

        1:〈x1,...,xn〉 = x1         i:〈x1,...,xn〉                 = xi si 0 < i ≤ n                = ⊥ en caso contrario

FP Categoría:Software de 1977