Festlegungen / Wichtige Informationen

Bevor wir uns aufmachen können und Haskell lernen, gibt es einige Informationen, die man als Haskell-Programmierer im Hinterkopf halten sollte.

Kommentare

Kommentare sollen den Quellcode erklären und helfen ihn auch in einem halben Jahr wieder zu verstehen. Bei Haskell ist es, wenn man C gewohnt ist, schwieriger später lesbaren Quellcode zu schreiben. Die Denkweise, die man in Haskell braucht unterscheidet sich einfach zu sehr von der C-Denkweise. Daher ist kommentieren der Funktionen (und evtl.) Parameter unbedingt notwendig. Kommentarzeilen können mit zwei Minuszeichen begonnen werden:

-- Dies ist ein Kommentar
-- Der nachfolgende Quellcode tut ganz wichtige Sachen:
antwort :: Int
antwort = 42

Datentypen- und Funktionsnamen

Namen von eigenen Funktionen und Variablen müssen grundsätzlich klein begonnen werden, wohingegen Datentypennamen (bspw. Int, mehr dazu im Kapitel Datentypen) grundsätzlich groß beginnen - das gilt auch für eigens definierte Datentypen.

Variablen

Variablen in Funktionen sind grundsätzlich nicht veränderlich! Haskell basiert nicht auf der Veränderung von Speicherzellen (repräsentiert durch Variablen), sondern es wird vielmehr eine mathematische Definition geliefert, anhand der sich der Compiler den Ablauf des auszuführenden Programms herleiten kann. Variablen repräsentieren einen Wert, stellen aber keine Speicherzelle dar, und können in einem Funktionsruf nicht verändert werden.

Will man im Quellcode einen Wert mehrfach verwenden, so kann der Wert mit einem Variablennamen versehen werden, sodass der Wert nur an einer Stelle im Code geändert werden muss. Bspw. addiert diese Funktion einen übergebenen Wert mit 42:

add :: Int -> Int
add b = 
    let a = 42
    in a + b

Alternativ gibt es noch die Variante mit where:

add :: Int -> Int
add b = a + b
        where a = 42

Über das Schlüsselwort where lassen sich auch Funktionen definieren, wohingegen let nur Variablennamen an Werte binden kann.

Schleifen

Schleifen gibt es nicht - wie auch, wenn die Variablen nicht verändert werden können? Soll Code mehrfach ausgeführt werden, muss die Funktion mehrfach ausgeführt werden. Dabei ist zu beachten, dass Funktionen immer das gleiche Ergebnis liefern auf die gleiche Eingabe. Es ist zu beachten, dass die Rekursion immer ein Ende finden muss. Mehr dazu im Kapitel Rekursion.

Einrückung

Schauen wir uns obiges Beispiel an:

add :: Int -> Int
add b = 
    let a = 42
    in a + b

Zu Beachten ist, dass die eigentlichen Funktionsanweisungen eingerückt sind. Haskell nutzt die Einrückungstiefe von Code dazu um die Zugehörigkeit des Codes festzulegen. Behalten Sie das im Hinterkopf, wenn Sie mit if-then-else das Ergebnis einer Funktion auswählen. Mehr zu if-then-else im Kapitel Pure Funktionen definieren.