Abrir menú principal

FP (lenguaje de programación)

lenguaje de programación
(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 lenguajeEditar

ValoresEditar

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〉 =

FuncionesEditar

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.

FuncionalesEditar

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ónEditar

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.

PrimitivasEditar

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