Parcours
/
Haskell
Haskell
/
Exercices
/
Les lasagnes délicieuses de Lucian
Les lasagnes délicieuses de Lucian

Les lasagnes délicieuses de Lucian

Exercice d'apprentissage

Introduction

Constantes et fonctions

Les programmes Haskell sont composés de définitions et d'expressions.

Une valeur constante se définit avec name = expression.

five = 5

six = 3 + 3

Les fonctions se définissent avec name parameters... = expression, les paramètres étant uniquement séparés par un espace.

add number1 number2 = number1 + number2

Appeler une fonction est aussi une expression : on écrit son nom, puis on passe des arguments pour chacun des paramètres de la fonction, séparés par des espaces, exactement comme pour les définitions de fonctions.

five = add 2 3

On peut utiliser des parenthèses pour préciser l'ordre d'évaluation d'une expression.

six = add 2 (1 * 4)

twelve = add 2 1 * 4

Indentation / espaces significatifs

Haskell utilise les espaces et l'indentation pour délimiter le code. Le code qui fait partie d'une expression doit être plus indenté que le début de cette expression.

  • Les définitions de modules, d'imports et de fonctions de premier niveau doivent commencer à la colonne la plus à gauche.
  • Si une expression est répartie sur plusieurs lignes, le code qui fait partie de cette expression doit être indenté sous cette expression d'au moins un espace.
  • Les parties de l'expression qui vont ensemble doivent être indentées avec le même nombre d'espaces.
-- A function split over multiple lines, so subsequent lines must be indented
add number1 number2 =
    number1 + number2

https://en.wikibooks.org/wiki/Haskell/Indentation

Modules

Les modules exportent des fonctions. Cela signifie qu'on peut utiliser les fonctions que le module rend disponibles dans sa déclaration d'export. Un module peut aussi définir des fonctions réservées à un usage interne. Par défaut, les fonctions qui ne sont pas explicitement exportées ne peuvent pas être utilisées depuis l'extérieur du module.

Au début d'un module, on précise le nom du module. Si on a un fichier appelé Calculator.hs, on doit alors nommer notre module Calculator. Ensuite, on précise les fonctions qu'il exporte, et après cela, on peut commencer à écrire les fonctions. On commence donc par ceci.

module Calculator ( add ) where

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

Commentaires

Un commentaire est un texte présent dans le fichier Haskell qui n'est pas interprété comme du code. Il est principalement destiné à être lu par toi et par les autres programmeurs. Il existe une syntaxe légère pour les commentaires sur une seule ligne, basée sur les doubles tirets. Les commentaires multilignes sont également possibles avec la paire de délimiteurs d'ouverture et de fermeture {- et -}.

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

{- a multiline comment
   spanning multiple lines
-}

Crédits

Cette introduction d'exercice s'inspire largement de Learn You a Haskell for Great Good!, sous Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License

Instructions

Dans cet exercice, tu vas écrire du code pour t'aider à cuisiner une lasagne épatante, tirée de ton livre de cuisine préféré.

Tu as trois tâches, toutes liées au temps passé à cuisiner la lasagne.

1. Définis le temps de cuisson attendu en minutes

Définis la constante expectedMinutesInOven pour vérifier combien de minutes la lasagne doit rester au four. D'après le livre de cuisine, le temps de cuisson attendu est de 40 minutes :

expectedMinutesInOven
    --> 40

2. Calcule le temps de préparation en minutes

Définis la fonction preparationTimeInMinutes qui prend en paramètre le nombre de couches que tu as ajoutées à la lasagne et renvoie le nombre de minutes que tu as passées à préparer la lasagne, en supposant que chaque couche te prend 2 minutes.

preparationTimeInMinutes 3
    --> 6

3. Calcule le temps écoulé en minutes

Définis la fonction elapsedTimeInMinutes qui prend deux paramètres : le premier paramètre est le nombre de couches que tu as ajoutées à la lasagne, et le second est le nombre de minutes que la lasagne a passées au four. La fonction doit renvoyer le nombre de minutes que tu as passées à cuisiner la lasagne, soit la somme du temps de préparation en minutes et du temps, en minutes, que la lasagne a déjà passé au four à cet instant.

elapsedTimeInMinutes 3 20
    --> 26
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Haskell Exercism

Prêt à commencer Les lasagnes délicieuses de Lucian ?

Inscris-toi sur Exercism pour apprendre et maîtriser Haskell avec 107 exercices, et un vrai mentorat humain, le tout gratuitement.