FP (lenguaje de programación)

De Wikipedia, la enciclopedia libre
(Redirigido desde «Lenguaje de programación FP»)

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 secuenciax1,...,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 :
            :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:

  •         fEf

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