# Haskell-Tutorial: Haskell lernen leicht gemacht

Unter den funktionalen Programmiersprachen nimmt [Haskell](https://www.ionos.de/digitalguide/websites/web-entwicklung/was-ist-haskell/ "Was ist Haskell?") eine besondere Rolle ein: Seit der Definition der ersten Version im Jahr 1990 zählt Haskell nämlich als **Quasi-Standard** für eine Sprache, die dem funktionalen [Programmierparadigma](https://www.ionos.de/digitalguide/websites/web-entwicklung/programmierparadigmen/ "Programmierparadigmen") folgt. Nicht von ungefähr orientieren sich viele andere funktionale Sprachen an Haskell. Das Lernen der Programmiersprache kann zu Beginn zwar schnell zu frustrierenden Erfahrungen führen – insbesondere, da die **Konzepte der funktionalen Programmierung** für unerfahrene Nutzer sehr gewöhnungsbedürftig sind. Sobald jedoch die ersten Einstiegshürden überwunden sind, können auch Neueinsteiger erfolgreich in die Welten der Haskell-Programmierung eintauchen.

Im nachfolgenden Haskell-Tutorial stellen wir Ihnen für einen möglichst **einfachen Einstieg** Schritt für Schritt vor, wie Sie die funktionale Sprache installieren und wie das Programmieren mit Haskell genau funktioniert.

## Haskell installieren und starten: So funktioniert’s

Wie bei vielen anderen Programmiersprachen auch, haben Sie verschiedene Möglichkeiten, um Ihr System für die Arbeit mit Haskell vorzubereiten. Die gängigste Lösung für alle, die Haskell lernen bzw. bequem mit der Sprache programmieren möchten, ist **GHCi**. Dabei handelt es sich um eine einsatzfertige, **interaktive Entwicklungsumgebung**, die im Paket mit dem [Glasgow Haskell Compiler](https://www.haskell.org/ghc/ "Offizielle Homepage des Glasgow Haskell Compilers (GHC)") verfügbar ist. Zusätzlich zu dem Compiler sind die Haskell-Bibliotheken vorausgesetzt, für die Sie wiederum eine **Building-Software** wie [Cabal](https://www.haskell.org/cabal/ "Applikations-und Bibliotheken-Building mit Cabal") oder [Stack](https://docs.haskellstack.org/en/stable/README/ "Haskell-Building-Software Stack") benötigen.

---

### Hinweis

Das Gesamtkonstrukt aus Haskell-Compiler und passender Building-Anwendung wird auch als **Haskell-Plattform** bezeichnet.

---

Für einen möglichst einfachen Einstieg installieren Sie eine komplette Haskell-Plattform. Einsatzfertige **Installationsdateien für Windows, macOS** und verschiedenste **Linux**-Distributionen zum kostenfreien Download (inklusive Installationsanleitung) finden Sie z. B. auf der [offiziellen Website des Haskell-Projekts](https://www.haskell.org/platform/ "haskell.org").

[![Bild: Haskell-Tutorial: Installationsdateien auf der Haskell-Website ](https://www.ionos.de/digitalguide/fileadmin/_processed_/2/e/csm_DE-haskell-tutorial-1_bd677df9a8.webp "Haskell-Tutorial: Installationsdateien auf der Haskell-Website ")](https://www.ionos.de/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/DE-haskell-tutorial-1.png) Die Installation der Haskell-Komponenten unter Windows ist an den für Windows konzipierten Paketmanager Chocolatey geknüpft.       In den Linux-Systemen können Sie auch den Installationsweg über den **Paketmanager** wählen. Als Ubuntu- oder Debian-Nutzer tippen Sie hierfür beispielsweise folgenden **Befehl** in das Terminal ein:

```none
sudo apt-get install haskell-platform
```

Nach abgeschlossener Installation sollten Sie die interaktive Entwicklungsumgebung jederzeit mit dem Befehl „**ghci**“ über die jeweilige Kommandozeile Ihres Systems **starten** können – in Windows beispielsweise via [PowerShell](https://www.ionos.de/digitalguide/server/knowhow/windows-powershell/), die auch für die Installation empfohlen wird.

---

### Hinweis

Beachten Sie, dass die **Haskell-Plattform-Versionen in den Paketverwaltungen** nicht immer auf dem aktuellen Stand sind. Unter Umständen ist also noch eine Aktualisierung der Installationsdateien erforderlich!

---

## Haskell lernen: Die grundlegenden Datentypen verstehen

Haskell ist eine rein funktionale Sprache, was sie wesentlich interaktiver und intelligenter als andere Programmiersprachen macht. Datentypen wie **Zahlen**, **Zeichen** oder **logische Werte** (Boolean) sind in Haskell bereits vordefiniert oder werden zumindest intelligent vom Computerspeicher aufgeschlüsselt.

### Zahlen in Haskell

Haskell versteht also beispielsweise natürliche Zahlen als natürliche Zahlen. Konkret heißt das: Sie müssen im Haskell-Code nicht definieren, dass es sich bei einer **Eingabe** um **eine Zahl** handelt. Ist die Entwicklungsumgebung gestartet, können Sie also einfach Rechnungen mit den gewohnten Operatoren wie Plus (+) oder Minus (-) durchführen. Tippen Sie exemplarisch „2+2“ ein und bestätigen Sie die Eingabe per Eingabetaste:

```none
Prelude> 2+2
```

Haskell präsentiert daraufhin das **Ergebnis** dieser mathematischen Rechnung: 4.

[![Bild: Windows PowerShell: Haskell-Tutorial-Beispiel](https://www.ionos.de/digitalguide/fileadmin/_processed_/d/9/csm_DE-haskell-tutorial-2_171e682fc3.webp "Windows PowerShell: Haskell-Tutorial-Beispiel")](https://www.ionos.de/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/DE-haskell-tutorial-2.png) Zum Starten der Entwicklungsumgebung ghci tippen Sie einfach „ghci“ in das Kommandozeilen-Tool Ihres Systems ein und bestätigen die Eingabe mit Enter.       ###  Buchstaben in Haskell

Auch Buchstaben kann Haskell intelligent erfassen, was wir an dieser Stelle im Haskell-Tutorial ganz einfach an einem Beispiel demonstrieren können: Zunächst setzen wir im Kommando die Option „:t“. Dies sorgt dafür, dass die Kommandozeile nach dem Bestätigen des Befehls ausgibt, um welchen Datentyp es sich handelt. Nach einem nachfolgenden Leerzeichen fügen Sie einen beliebigen Buchstaben **in einfachen oder doppelten Anführungszeichen** ein und senden den Input mit Enter ab:

```none
Prelude>:t "a"
```

Das Ausgabeergebnis lautet in diesem Fall korrekterweise „**\[Char\]**“, was für das englische Wort „character“ steht – zu Deutsch: Buchstabe.

[![Bild: Haskell lernen: Output mit Buchstabe ](https://www.ionos.de/digitalguide/fileadmin/_processed_/e/a/csm_DE-haskell-tutorial-3_dab276bb28.webp "Haskell lernen: Output mit Buchstabe ")](https://www.ionos.de/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/DE-haskell-tutorial-3.png) Haskell-Output mit erfasstem Buchstaben in der Windows PowerShell.       ###  Zeichenketten in Haskell

Zeichenketten, die in Programmiersprachen besser unter dem englischen Begriff „Strings“ bekannt sind, kann Haskell ebenfalls ohne Probleme als solche erkennen. Auch in diesem Fall benötigen Sie keine spezifische Syntax – es reicht, wenn Sie die jeweilige **Zeichenfolge in doppelte Anführungszeichen setzen**. Ein Beispiel liefert folgende Eingabe, die aus Zahlen und Buchstaben besteht:

```none
Prelude>:t "12345abcde"
```

Indem wir auch an dieser Stelle wieder die Option „:t“ setzen, verrät uns Haskell erneut im Output, um welchen Datentyp es sich handelt. Wie bei einem einzelnen Buchstaben zeigt die Kommandozeile „\[Char\]“ an.

[![Bild: Haskell-Tutorial: Zeichenfolge-Input in ghci (Windows PowerShell)](https://www.ionos.de/digitalguide/fileadmin/_processed_/3/1/csm_DE-haskell-tutorial-4_2b149dd2cd.webp "Haskell-Tutorial: Zeichenfolge-Input in ghci (Windows PowerShell)")](https://www.ionos.de/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/DE-haskell-tutorial-4.png) Die exemplarische Haskell-Tutorial-Zeichenkette wird von Haskell korrekt als Character- bzw. Buchstaben-Input erfasst.       ##  Haskell lernen: Vorstellung der wichtigsten Operatoren

Im Abschnitt über Zahlen haben wir bereits herausgestellt, dass Sie die typischen **mathematischen Operatoren** – Addition, Subtraktion, Division und Multiplikation – in Haskell ohne größere Umstände einsetzen können. Mit dem Sequenz- oder Bereichsoperator steht zudem ein Operator für die einfache Auflistung von aufeinanderfolgenden Werten zur Verfügung.

---

### Hinweis

Für die Ausführung und Ergebnisdarstellung der nachfolgenden Code-Snippets dieses Haskell-Tutorials wurde die Web-Entwicklungsumgebung [Online Haskell Compiler](https://www.tutorialspoint.com/compile_haskell_online.php?external-link-window) verwendet.

---

### Addition in Haskell

Der Additionsoperator für das Zusammenrechnen von zwei oder mehr Werten wird auch in Haskell klassisch durch das **Pluszeichen** (+) wiedergegeben. Im nachfolgenden Codebeispiel, das wir in die Datei ***main.hs*** einfügen, binden wir mithilfe des Ausdrucks „**let**“ zwei Variablen („var1“ und „var2“) ein, die addiert werden sollen. Die Kommandozeile soll anschließend das Ergebnis in Form einer **Textnachricht** präsentieren, die in dem Ausdruck „**putStrLn**“ definiert wird:

```none
main = do 
let var1 = 2 
let var2 = 3 
putStrLn "Die beiden Zahlen ergeben zusammengerechnet:" 
print(var1 + var2)
```

Im oben genannten Onlinetool sehen **Input** (linkes Fenster) und **Output** (rechtes Fenster) folgendermaßen aus:

[![Bild: Haskell-Beispiel: Addition zweier Werte ](https://www.ionos.de/digitalguide/fileadmin/_processed_/c/e/csm_DE-haskell-tutorial-5_cd337dd8a9.webp "Haskell-Beispiel: Addition zweier Werte ")](https://www.ionos.de/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/DE-haskell-tutorial-5.png) Wer Haskell lernt, braucht bei mathematischen Operatoren nicht umzudenken: Die funktionale Sprache versteht die typischen Zeichen wie das Pluszeichen.       ###  Subtraktion in Haskell

Wollen Sie Haskell anweisen, einen Zahlenwert von einem anderen abzuziehen, nutzen Sie den klassischen Subtraktionsoperator – ausgedrückt durch das Minuszeichen (-). Im vorangegangenen Haskell-Tutorial-Beispiel für die Addition ersetzen wir einfach den Operator und passen die Output-Nachricht leicht an:

```none
main = do 
let var1 = 2 
let var2 = 3 
putStrLn "Das Subtraktionsergebnis der beiden Zahlen ist:" 
print(var1 - var2)
```

[![Bild: Haskell lernen: Subtraktion von zwei Wert-Variablen ](https://www.ionos.de/digitalguide/fileadmin/_processed_/8/6/csm_DE-haskell-tutorial-6_f19db2705d.webp "Haskell lernen: Subtraktion von zwei Wert-Variablen ")](https://www.ionos.de/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/DE-haskell-tutorial-6.png) Wollen Sie – anders als in unseren Haskell-Tutorial-Beispielen – mehr als zwei Werte zusammenrechnen bzw. von einem Grundwert abrechnen, können Sie dies mit Haskell natürlich ebenfalls tun.       ---

### Hinweis

Auch für die Operatoren der **Division** und **Multiplikation** greift Haskell auf die typischen Zeichen zurück: Mit Slash bzw. Schrägstrich (/) können Sie Werte dividieren, mit dem Sternchen-Zeichen (\*) weisen Sie Haskell an, Werte zu multiplizieren.

---

### Auflistungen von Werten in Haskell

Der „Sequenz“-Operator ist ein spezieller Operator von Haskell. Er ermöglicht es Ihnen, auf einfachste Weise eine **Auflistung mit einer Sequenz von Werten zu deklarieren**. Gekennzeichnet wird er durch „**\[..\]**“. Möchten Sie also beispielsweise, dass Haskell alle Zahlen von 1 bis 10 anzeigt, können Sie für dieses Zahlenspektrum den Input „\[1..10\]“ angeben. Gleiches gilt für Buchstaben – mit „\[a..z\]“ beispielsweise lässt Sie sich im Haskell-Code das Alphabet präsentieren. Auch für den „Sequenz“-Operator haben wir an dieser Stelle ein einfaches Beispiel:

```none
main :: IO()
main = do
print [1..10]
```

[![Bild: Haskell-Beispiel: „Sequenz”-Operator ](https://www.ionos.de/digitalguide/fileadmin/_processed_/0/6/csm_DE-haskell-tutorial-7_5aa4613393.webp "Haskell-Beispiel: „Sequenz”-Operator ")](https://www.ionos.de/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/DE-haskell-tutorial-7.png) Mit dem „Sequenz”-Operator erhalten Sie in Haskell ohne großen Aufwand einen vollständigen Output von Wert-Sequenzen.       ##  Haskell: So deklarieren und definieren Sie Funktionen

Haskell ist eine rein funktionale Sprache. Dass Funktionen daher bei der Haskell-Programmierung eine wichtige Rolle spielen, ist also keine große Überraschung. Haskell verfolgt dabei, wie andere Sprachen auch, seinen eigenen Weg, um **Funktionen zu deklarieren** und zu **definieren**.

---

### Hinweis

Die **Deklaration** einer Funktion verrät dem Compiler, dass eine bestimmte Funktion existiert. Zudem gibt sie an, welche Parameter zu erwarten sind und wie der Output auszusehen hat. Als **Definition** einer Funktion bezeichnet man das tatsächliche Einbinden der Funktion im Code.

---

Um Ihnen das Funktionsprinzip von Haskell in diesem Tutorial näher zu bringen, schauen wir erneut auf ein konkretes Codebeispiel:

```none
add :: Integer -> Integer -> Integer   --function declaration
add x y =  x + y                       --function definition
main = do 
putStrLn "Die Summe der beiden Zahlen ist:"
print(add 3 5)    --calling a function
```

In der ersten Codezeile wird die Funktion deklariert – alle drei Werte der Funktion (Input und Output) sind ganze Zahlen (Integer). In Zeile 2 wird die Funktion definiert: Die zwei Argumente „x“ und „y“ werden addiert. Mit der bereits bekannten **„main“-Methode** wird der Code kompiliert und das Ergebnis der Funktion für die beiden Eingabewerte „3“ und „5“ ausgegeben.

[![Bild: Haskell lernen: Deklaration und Definition einer Funktion ](https://www.ionos.de/digitalguide/fileadmin/_processed_/6/9/csm_DE-haskell-tutorial-8_538ea10e5e.webp "Haskell lernen: Deklaration und Definition einer Funktion ")](https://www.ionos.de/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/DE-haskell-tutorial-8.png) Haskell-Tutorial: Deklaration, Definition und Aufruf einer Funktion im Online Haskell Compiler.       Einen tieferen Einblick in die Arbeit mit Funktionen in Haskell liefert folgendes YouTube-Tutorial für Anfänger:

[YouTube video](https://www.youtube.com/watch?v=AtsPtAf2avQ)        ##  Weiterführende Tipps zum Haskell-Lernen und -Programmieren

Haskell ist eine sehr populäre Sprache, weshalb das Hilfsangebot in Form von Onlinemanuals, Tutorials und Supportforen sehr groß ist. Zu empfehlen ist beispielsweise die **YouTube-Tutorial-Reihe** [„Haskell for Imperative Programmers“](https://www.youtube.com/playlist?list=PLe7Ei6viL6jGp1Rfu0dil1JH1SHk9bgDV "YouTube-Tutorial-Reihe „Haskell for Imperative Programmers“") von Philipp Hagenlocher, die die wichtigsten Komponenten der funktionalen Sprache in **über 30 Videos mit verschiedenen Themenschwerpunkten** zusammenfasst. Einen umfangreichen Überblick über weitere Hilfsangebote im Web liefert der [Community-Bereich der offiziellen Haskell-Homepage](https://www.haskell.org/community/ "haskell.org: Community"). Freunde gedruckter Literatur kommen u. a. in dem **Buch** [„Haskell from the very beginning“](https://www.haskellfromtheverybeginning.com/ "Offizielle Website von „Haskell from the very beginning“") von John Whitington auf ihre Kosten.

Wenn Sie die interaktive Entwicklungsumgebung ghci nutzen, können Sie sich beim Lernen von Haskell im Übrigen auch jederzeit eine vollständige **Übersicht der verfügbaren Kommandos anzeigen** lassen. Tippen Sie hierfür einfach folgenden Befehl in die Kommandozeile ein und bestätigen Sie die Eingabe mit der Eingabetaste:

```none
Prelude>:?
```

[![Bild: Haskell-Tutorial: ghci-Kommandos im Überblick ](https://www.ionos.de/digitalguide/fileadmin/_processed_/5/6/csm_DE-haskell-tutorial-9_4dca38c27d.webp "Haskell-Tutorial: ghci-Kommandos im Überblick ")](https://www.ionos.de/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/DE-haskell-tutorial-9.png) Der Aufruf der Befehlsübersicht kann Ihnen den Umgang mit der interaktiven Haskell-Entwicklungsumgebung ghci erheblich erleichtern.


This is a markdown version of: [https://www.ionos.de/digitalguide/websites/web-entwicklung/haskell-tutorial/](https://www.ionos.de/digitalguide/websites/web-entwicklung/haskell-tutorial/) for AI/LLM consumption.