FP (lenguaje de programación)
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
[editar]Valores
[editar]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
[editar]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
[editar]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
[editar]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
[editar]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