Trilhas
/
Haskell
Haskell
/
Exercícios
/
A lasanha deliciosa do Lucian
A lasanha deliciosa do Lucian

A lasanha deliciosa do Lucian

Exercício de aprendizagem

Introdução

Constantes e funções

Programas em Haskell são compostos de definições e expressões.

Um valor constante é definido com name = expression.

five = 5

six = 3 + 3

Funções são definidas com name parameters... = expression, com os parâmetros separados apenas por espaço.

add number1 number2 = number1 + number2

Chamar uma função também é uma expressão e é feito especificando o nome dela e passando argumentos para cada parâmetro da função, separados por espaços, assim como nas definições de função.

five = add 2 3

Parênteses podem ser usados para especificar a ordem de avaliação de uma expressão.

six = add 2 (1 * 4)

twelve = add 2 1 * 4

Indentação / espaços em branco significativos

Haskell usa espaços em branco e indentação para especificar os limites do código. O código que faz parte de alguma expressão deve ser indentado mais para dentro do que o início dessa expressão.

  • As definições de módulo, import e funções de nível superior devem começar na coluna mais à esquerda.
  • Se uma expressão for dividida em várias linhas, o código que faz parte dessa expressão deve ser indentado sob essa expressão com pelo menos um espaço.
  • As partes da expressão que estão agrupadas devem ser indentadas com o mesmo número de espaços.
-- 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

Módulos exportam funções. Isso significa que você pode usar as funções que o módulo disponibiliza em sua declaração de exportação. Um módulo também pode definir funções apenas para uso interno. Por padrão, funções que não são exportadas explicitamente não podem ser usadas de fora do módulo.

No início de um módulo, especificamos o nome do módulo. Se tivermos um arquivo chamado Calculator.hs, devemos nomear nosso módulo como Calculator. Depois, especificamos as funções que ele exporta e, após isso, podemos começar a escrever as funções. Então, vamos começar com isto.

module Calculator ( add ) where

https://learnyouahaskell.github.io/modules#making-our-own-modules

Comentários

Um comentário é um texto dentro do arquivo Haskell que não é interpretado como código. Ele se destina principalmente a ser lido por você e por outros programadores. Existe uma sintaxe leve para comentários de uma linha, baseada em hífens duplos. Comentários de várias linhas também são possíveis com o par de delimitadores de abertura e fechamento {- e -}.

-- a single line comment
-- another single line comment

{- a multiline comment
   spanning multiple lines
-}

Créditos

Esta introdução de exercício se baseia livremente em Learn You a Haskell for Great Good!, sob a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License

Instruções

Neste exercício você vai escrever um pouco de código para ajudar a preparar uma lasanha incrível do seu livro de receitas favorito.

Você tem três tarefas, todas relacionadas ao tempo gasto preparando a lasanha.

1. Defina o tempo esperado no forno, em minutos

Defina a constante expectedMinutesInOven para verificar quantos minutos a lasanha deve ficar no forno. De acordo com o livro de receitas, o tempo esperado no forno, em minutos, é 40:

expectedMinutesInOven
    --> 40

2. Calcule o tempo de preparo, em minutos

Defina a função preparationTimeInMinutes que recebe como parâmetro o número de camadas que você adicionou à lasanha e retorna quantos minutos você gastou preparando a lasanha, considerando que cada camada leva 2 minutos para preparar.

preparationTimeInMinutes 3
    --> 6

3. Calcule o tempo decorrido, em minutos

Defina a função elapsedTimeInMinutes que recebe dois parâmetros: o primeiro é o número de camadas que você adicionou à lasanha, e o segundo é o número de minutos que a lasanha está no forno. A função deve retornar quantos minutos você trabalhou preparando a lasanha, que é a soma do tempo de preparo, em minutos, com o tempo, em minutos, que a lasanha passou no forno até o momento.

elapsedTimeInMinutes 3 20
    --> 26
Editar via GitHub O link abre em uma nova janela ou aba
Haskell Exercism

Tudo pronto para começar A lasanha deliciosa do Lucian?

Crie sua conta no Exercism para aprender e dominar Haskell com 107 exercícios e mentoria humana de verdade, tudo de graça.