Os programas em Haskell são compostos por definições e expressões.
Um valor constante define-se com name = expression.
five = 5
six = 3 + 3
As funções definem-se com name parameters... = expression, sendo os parâmetros separados apenas por espaços.
add number1 number2 = number1 + number2
Invocar uma função também é uma expressão e faz-se indicando o seu nome e passando argumentos para cada um dos parâmetros da função, separados por espaços, tal como nas definições de funções.
five = add 2 3
Podes usar parênteses para especificar a ordem de avaliação de uma expressão.
six = add 2 (1 * 4)
twelve = add 2 1 * 4
O Haskell usa espaços em branco e indentação para delimitar o código. O código que faz parte de uma expressão deve estar mais indentado do que o início dessa expressão.
-- A function split over multiple lines, so subsequent lines must be indented
add number1 number2 =
number1 + number2
https://en.wikibooks.org/wiki/Haskell/Indentation
Os módulos exportam funções. Isso significa que podes usar as funções que o módulo disponibiliza na sua declaração de exportação. Um módulo também pode definir funções apenas para uso interno. Por predefinição, as funções que não são exportadas explicitamente não podem ser usadas a partir de fora do módulo.
No início de um módulo, indicamos o nome do módulo. Se tivermos um ficheiro chamado Calculator.hs, devemos dar ao nosso módulo o nome Calculator. Depois, indicamos as funções que exporta e, a seguir, 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
Um comentário é um texto dentro do ficheiro Haskell que não é interpretado como código.
Destina-se sobretudo a ser lido por ti e por outros programadores.
Existe uma sintaxe simples para comentários de uma só linha, baseada em dois traços.
Também é possível fazer comentários de várias linhas com o par de delimitadores de abertura e fecho {- e -}.
-- a single line comment
-- another single line comment
{- a multiline comment
spanning multiple lines
-}
Esta introdução ao exercício baseia-se generosamente em Learn You a Haskell for Great Good!, sob a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
Neste exercício vais escrever algum código para te ajudar a cozinhar uma lasanha fantástica do teu livro de receitas preferido.
Tens três tarefas, todas relacionadas com o tempo gasto a cozinhar a lasanha.
Define a constante expectedMinutesInOven para verificar quantos minutos a lasanha deve estar no forno. De acordo com o livro de receitas, o tempo esperado no forno, em minutos, é 40:
expectedMinutesInOven
--> 40
Define a função preparationTimeInMinutes, que recebe como parâmetro o número de camadas que adicionaste à lasanha e devolve quantos minutos passaste a preparar a lasanha, assumindo que cada camada demora 2 minutos a preparar.
preparationTimeInMinutes 3
--> 6
Define a função elapsedTimeInMinutes, que recebe dois parâmetros: o primeiro parâmetro é o número de camadas que adicionaste à lasanha e o segundo parâmetro é o número de minutos que a lasanha está no forno. A função deve devolver quantos minutos trabalhaste a cozinhar a lasanha, ou seja, a soma do tempo de preparação, em minutos, com o tempo, em minutos, que a lasanha já passou no forno até ao momento.
elapsedTimeInMinutes 3 20
--> 26
Inscreve-te no Exercism para aprenderes e dominares Haskell com 107 exercícios, e mentoria humana real, tudo grátis.