jueves, 30 de abril de 2020

Funciones en Haskell

Haskell es un lenguaje funcional, por lo que el concepto de función es esencial para el lenguaje. Una función toma uno o más argumentos y calcula un resultado. Dados los mismos argumentos, el resultado siempre será el mismo. Esto es similar a una función matemática y significa que en Haskell no hay efectos secundarios. Hay dos operaciones fundamentales en las funciones: definición de función (crear una función) y aplicación de función (usar una función para calcular un resultado).

En Haskell, muchas funciones están predefinidas en una biblioteca estándar llamada preludio (prelude)

Una función se define mediante una ecuación.
f = \ x -> x + 1 - función lambda
- o
f x = x + 1 - función nombrada

Esto es equivalente a f (x) = x + 1 en notación matemática.

El lado izquierdo de la ecuación parece una variable, y eso es lo que es. El lado derecho es una expresión que usa las variables locales enumeradas entre paréntesis y define el resultado de la expresión.

Una aplicación es una expresión como f 31, donde 31 es el argumento. La aplicación se evalúa reemplazándola con el cuerpo de la función, donde los parámetros formales se reemplazan por los argumentos.

Veamos un ejemplo :

f = \ x -> x + 1
  f 3
-> {enlace x = 3}
  (x + 1) donde x = 3
-> {sustituir 3 por x}
  3 + 1
->
4

Una función con tres argumentos:

add3nums = \ x y z -> x + y + z

Y podemos usarlo :

10 + 4* add3nums 1 2 3
= {- put extra parentheses in to show structure -}
  10 + ( 4* (add3nums 1 2 3) )
  -- >
  10 + (4*(1+2+3) )
  -- >
  10 + (4*6)
  -- >
  10 + 24
  -- >
  34

No hay comentarios.:

Publicar un comentario