Los programas de Haskell se componen de definiciones y expresiones.
Un valor constante se define con name = expression.
five = 5
six = 3 + 3
Las funciones se definen con name parameters... = expression, y los parámetros se separan solo por espacios.
add number1 number2 = number1 + number2
Llamar a una función también es una expresión y se hace escribiendo su nombre y pasando argumentos para cada uno de los parámetros de la función, separados por espacios, igual que en las definiciones de funciones.
five = add 2 3
Los paréntesis se pueden usar para especificar el orden de evaluación de una expresión.
six = add 2 (1 * 4)
twelve = add 2 1 * 4
Haskell usa los espacios en blanco y la indentación para delimitar el código. El código que forma parte de una expresión debe tener más indentación que el inicio de esa expresión.
-- A function split over multiple lines, so subsequent lines must be indented
add number1 number2 =
number1 + number2
https://en.wikibooks.org/wiki/Haskell/Indentation
Los módulos exportan funciones. Eso significa que puedes usar las funciones que el módulo pone a disposición en su sentencia de exportación. Un módulo también puede definir funciones solo para uso interno. Por defecto, las funciones que no se exportan explícitamente no se pueden usar desde fuera del módulo.
Al inicio de un módulo, especificamos el nombre del módulo. Si tenemos un archivo llamado Calculator.hs, entonces debemos llamar Calculator a nuestro módulo. Después, especificamos las funciones que exporta y, luego, podemos empezar a escribir las funciones. Así que empezaremos con esto.
module Calculator ( add ) where
https://learnyouahaskell.github.io/modules#making-our-own-modules
Un comentario es un texto dentro del archivo de Haskell que no se interpreta como código.
Está pensado principalmente para que lo lean tú y otras personas que programan.
Hay una sintaxis ligera para los comentarios de una sola línea, basada en dos guiones.
Los comentarios de varias líneas también son posibles con el par de delimitadores de apertura y cierre {- y -}.
-- a single line comment
-- another single line comment
{- a multiline comment
spanning multiple lines
-}
Esta introducción al ejercicio toma mucho de Learn You a Haskell for Great Good!, bajo la Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported
En este ejercicio vas a escribir un poco de código para ayudarte a cocinar una lasaña espectacular de tu libro de cocina favorito.
Tienes tres tareas, todas relacionadas con el tiempo que se tarda en cocinar la lasaña.
Define la constante expectedMinutesInOven para comprobar cuántos minutos debe estar la lasaña en el horno. Según el libro de cocina, el tiempo esperado en el horno en minutos es 40:
expectedMinutesInOven
--> 40
Define la función preparationTimeInMinutes que toma como parámetro el número de capas que agregaste a la lasaña y devuelve cuántos minutos pasaste preparando la lasaña, suponiendo que cada capa te toma 2 minutos de preparación.
preparationTimeInMinutes 3
--> 6
Define la función elapsedTimeInMinutes que toma dos parámetros: el primer parámetro es el número de capas que agregaste a la lasaña, y el segundo parámetro es el número de minutos que la lasaña ha estado en el horno. La función debe devolver cuántos minutos has trabajado cocinando la lasaña, que es la suma del tiempo de preparación en minutos y el tiempo en minutos que la lasaña ha pasado en el horno en ese momento.
elapsedTimeInMinutes 3 20
--> 26
Regístrate en Exercism para aprender y dominar Haskell con 107 ejercicios y mentoría humana real, todo gratis.