Bei der Schulung ist es sinnvoll, den Code nachzuvollziehen bzw. eigenen zu schreiben.
Für den Vorkurs bitte Racket installieren, mindestens Version 8.7:
https://download.racket-lang.org/
Für den Hauptteil brauchen wir eine Installation von Haskell und eine IDE, in der Regel Visual Studio Code.
Es gibt grundsätzlich zwei Installationsmethoden für Haskell, GHCup und Nix.
-
GHCup installieren.
-
Dabei alle "Default"-Optionen auswählen.
-
Bei "Do you want to install haskell-language-server (HLS)?" "Yes" antworten.
Danach diese Befehle hier absetzen:
ghcup install ghc 9.8.4
ghcup set ghc 9.8.4
Um die Installation zu testen, bitte VSCode starten, die Extension
haskell.haskell
starten und in der Datei haskell-code/Intro.hs
das module
verunstalten (z. B. einen Buchstaben entfernen)
-
Die Single-User-Variante von Nix installieren (Multi-User funktioniert auch, ist aber schwieriger wieder vom System zu entfernen, falls man das möchte)
-
Flakes einschalten: in der Regel bedeutet das, in
~/.config/nix/nix.conf
die folgende Zeile einzutragen:experimental-features = nix-command flakes
-
cd <path-to>/funar
-
nix develop .#withVSCode
ausführen -> Sie befinden sich nun in einer projektspezifischen, entsprechend gekennzeichneten Umgebung -
Mit
code .
VSCode in diesem Ordner öffnen -
In der Datei
haskell-code/Intro.hs
dasmodule
verunstalten (z. B. einen Buchstaben beimwhere
entfernen) -
Nach etwas Wartezeit (in der unteren Leiste sollte "Processing" oder ähnlich zu sehen sein) sollte etwas rot unterschlängelt werden
- Falls Sie Ihr "eigenes" VSCode nutzen möchten (auf eigene Gefahr), schreiben
Sie bitte einfach
nix develop
(lassen also das.#withVSCode
weg). Sie benötigen dann noch die Extensionhaskell.haskell
. - Diese Instruktionen funktionieren auch auf macOS, allerdings ist dort keine Single-User-Installation von Nix (mehr) möglich.
... bitte Mike Sperber kontaktieren.
Falls Model-View-Update drankommt, werden wir Elm brauchen. Anleitung zur Installation hier:
https://guide.elm-lang.org/install/
Falls Sie nix
verwenden, dann ist elm
bereits in der Entwicklungsumgebung
(nix develop
) vorhanden.
Zurückliegende Schulungen werden in GitHub als Branches archiviert und sollten am Datum erkennbar sein.
- Michael Sperber, Herbert Klaeren: Schreibe Dein Programm!
- Sandy Maguire: Algebra-Driven Design
- Michael Pilquist, Rúnar Bjarnason, and Paul Chiusano Functional Programming in Scala
- Scott Wlaschin: Domain Modeling Made Functional