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
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.
-- 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 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
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
-}
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
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.
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
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
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
Melde dich bei Exercism an, um Haskell mit 107 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.