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