Tracks
/
Haskell
Haskell
/
Übungen
/
Lucians köstliche Lasagne
Lucians köstliche Lasagne

Lucians köstliche Lasagne

Lernübung

Einführung

Konstanten und Funktionen

Haskell-Programme bestehen aus Definitionen und Ausdrücken.

Ein konstanter Wert wird mit name = expression definiert.

five = 5

six = 3 + 3

Funktionen werden mit name parameters... = expression definiert, wobei Parameter nur durch Leerzeichen getrennt werden.

add number1 number2 = number1 + number2

Eine Funktion aufzurufen ist ebenfalls ein Ausdruck. Du gibst dabei ihren Namen an und übergibst Argumente für jeden Parameter der Funktion, durch Leerzeichen getrennt, genau wie bei Funktionsdefinitionen.

five = add 2 3

Mit runden Klammern kannst du die Reihenfolge der Auswertung eines Ausdrucks festlegen.

six = add 2 (1 * 4)

twelve = add 2 1 * 4

Einrückung / signifikanter Whitespace

Haskell verwendet Whitespace und Einrückung, um Codegrenzen festzulegen. Code, der Teil eines Ausdrucks ist, muss weiter eingerückt sein als der Anfang dieses Ausdrucks.

  • Moduldefinitionen, Import-Anweisungen und Top-Level-Funktionsdefinitionen müssen in der am weitesten links liegenden Spalte beginnen.
  • Wenn ein Ausdruck auf mehrere Zeilen aufgeteilt wird, muss der Code, der Teil dieses Ausdrucks ist, unter diesem Ausdruck mit mindestens einem Leerzeichen eingerückt werden.
  • Teile des Ausdrucks, die zusammengehören, sollten mit gleich vielen Leerzeichen eingerückt werden.
-- A function split over multiple lines, so subsequent lines must be indented
add number1 number2 =
    number1 + number2

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

Module

Module exportieren Funktionen. Das bedeutet, dass du die Funktionen verwenden kannst, die das Modul in seiner Export-Deklaration bereitstellt. Ein Modul kann auch Funktionen nur für den internen Gebrauch definieren. Standardmäßig können Funktionen, die nicht explizit exportiert werden, nicht von außerhalb des Moduls verwendet werden.

Am Anfang eines Moduls geben wir den Modulnamen an. Wenn wir eine Datei namens Calculator.hs haben, sollten wir unser Modul Calculator nennen. Dann geben wir die Funktionen an, die es exportiert, und danach können wir mit dem Schreiben der Funktionen beginnen. Fangen wir also damit an.

module Calculator ( add ) where

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

Kommentare

Ein Kommentar ist ein Text innerhalb der Haskell-Datei, der nicht als Code interpretiert wird. Er ist hauptsächlich dafür gedacht, von dir und anderen Programmierern gelesen zu werden. Es gibt eine einfache Syntax für einzeilige Kommentare, die auf doppelten Bindestrichen basiert. Mehrzeilige Kommentare sind ebenfalls mit dem Paar aus öffnendem und schließendem Begrenzungszeichen {- und -} möglich.

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

{- a multiline comment
   spanning multiple lines
-}

Danksagung

Diese Einführung zur Übung übernimmt großzügig Inhalte aus Learn You a Haskell for Great Good!, unter der Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License

Anleitung

In dieser Übung schreibst du etwas Code, mit dem du eine großartige Lasagne aus deinem Lieblingskochbuch zubereiten kannst.

Du hast drei Aufgaben, die sich alle um die Zeit drehen, die du mit dem Kochen der Lasagne verbringst.

1. Definiere die erwartete Backzeit in Minuten

Definiere die Konstante expectedMinutesInOven, um zu prüfen, wie viele Minuten die Lasagne im Ofen bleiben sollte. Laut Kochbuch beträgt die erwartete Backzeit in Minuten 40:

expectedMinutesInOven
    --> 40

2. Berechne die Vorbereitungszeit in Minuten

Definiere die Funktion preparationTimeInMinutes, die die Anzahl der Schichten, die du der Lasagne hinzugefügt hast, als Parameter entgegennimmt und zurückgibt, wie viele Minuten du für die Vorbereitung der Lasagne gebraucht hast. Dabei gehst du davon aus, dass jede Schicht 2 Minuten Vorbereitung braucht.

preparationTimeInMinutes 3
    --> 6

3. Berechne die verstrichene Zeit in Minuten

Definiere die Funktion elapsedTimeInMinutes, die zwei Parameter entgegennimmt: Der erste Parameter ist die Anzahl der Schichten, die du der Lasagne hinzugefügt hast, und der zweite Parameter ist die Anzahl der Minuten, die die Lasagne schon im Ofen war. Die Funktion soll zurückgeben, wie viele Minuten du mit dem Kochen der Lasagne verbracht hast. Das ist die Summe aus der Vorbereitungszeit in Minuten und der Zeit in Minuten, die die Lasagne bis zu diesem Moment im Ofen verbracht hat.

elapsedTimeInMinutes 3 20
    --> 26
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Haskell Exercism

Bereit, mit Lucians köstliche Lasagne zu starten?

Melde dich bei Exercism an, um Haskell mit 107 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.