Tracks
/
Haskell
Haskell
/
Ejercicios
/
La deliciosa lasaña de Lucian
La deliciosa lasaña de Lucian

La deliciosa lasaña de Lucian

Ejercicio de aprendizaje

Introducción

Constantes y funciones

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

Indentación / espacios en blanco significativos

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.

  • Las definiciones de módulos, de importaciones y de funciones de nivel superior deben empezar en la columna más a la izquierda.
  • Si una expresión se divide en varias líneas, el código que forma parte de esa expresión debe estar indentado bajo esa expresión con al menos un espacio.
  • Las partes de la expresión que van agrupadas deben tener la misma cantidad de espacios de indentació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

Módulos

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

Comentarios

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
-}

Créditos

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

Instrucciones

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.

1. Define el tiempo esperado en el horno, en minutos

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

2. Calcula el tiempo de preparación, en minutos

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

3. Calcula el tiempo transcurrido, en minutos

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
Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
Haskell Exercism

¿Todo listo para empezar La deliciosa lasaña de Lucian?

Regístrate en Exercism para aprender y dominar Haskell con 107 ejercicios y mentoría humana real, todo gratis.