FP (lenguaje de programación)

De Wikipedia, la enciclopedia libre

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