Funktionale Programmierung mit Haskell (LK Informatik, opp)

Vorbemerkungen


Hinweise zur Installation von Haskell bzw. dem Haskell-Interprtere (GHCi), den wir im Unterricht einsetzen
Neuere Hinweise und herunterladbare Dateien sind im itslearning-Bereich zum LK Informatik zu finden!

  1. Laden Sie am besten WinHugs2Go (2006 - Windows, im Anhang) herunter. Nach Entpacken starten Sie die winhugs.exe Datei.
    Alternativ - wenn die entpackte Version nicht out of the box funktioniert - können Sie eine Installation unter Windows (WinHugs Installation im Anhang) versuchen. Oft gibt es dabei Probleme mit der (alten) .chm Hilfe-Datei. Bei einer Installation sicherheitshalber im Installationsdialog den Haken bei "Run programm after installation" entfernen. Falls es dennoch Probleme mit der Installation gibt, die Installationsdatei in den Kompatibilitätsmodus auf Windows XP (Service Pack 3) stellen und/oder probeweise imInstallations-Dialog die beiden weitern Haken entfernen.
  2. WinHugs (Sep 2006, Haskell 98 Standard) ist unsere Referenzversion für den Unterricht und auch um zu Hause zu arbeiten. Auf der WinHugs-Seite gibt es weitere Versionen für andere Betriebssysteme. Allerdings wird dringend dazu geraten, die Windows-Version zu benutzen. Um Windows-Programme auf dem MAC auszuführen gab es mal Play On Mac. Dies funktioniert auf einem neueren MacOS nicht mehr. Dafür empfiehlt sich jetzt Porting Kit, um (auch 32bit-)Windows Programme auf dem Mac auszuführen. Damit sollte die Installation von WinHugs möglich sein. Eine Installation auf einem (M1-)Mac mit Monterey war jedenfalls schon erfolgreich . Porting Kit sollte auch unter LINUX funktionieren und damit das ältere Play On Linux ablösen. Die Mac bzw. LINUX Lösungen bieten eine leicht zu konfigurierende Wine-Installation (Windows-Emulator) an. Darunter läuft WinHugs (Windows) im Grunde problemlos.
    NEUE Hinweise für MAC-Benutzer: nach dem Upgrade auf Mac OS Catalina (10.15) lässt sich "Play on Mac" nicht mehr betreiben, da es als 32-bit Programm nicht mehr akzeptiert wird. Deshalb kann, wenn die obige Variante - mit Porting Kit - nicht funktioniert oder gewünscht wird, Hugs98 über das Terminal 
    installiert werden (Der Link führt zur englischen Installationsanleitung von Hugs98 unter OSX mit homebrew).
    Installieren Sie WinHugs auf ihrem Rechner zu Hause. Wenn Sie in der Schule arbeiten, starten Sie WinHugs dort normalerweise im Startmenü im Ordner Programmieren oder über Eingabe ins Suchfeld.
    Falls alle Stricke reißen und Sie zu Hause keine Möglichkeit haben, WinHugs oder Hugs zu istallieren, können diese Workarounds helfen:

geplanter Ablauf und Aufgaben. Hinweis: hier findet sich vieles, aber nicht alles, aus dem Unterricht bzw. was für die Klausur notwendig ist. Datum in Klammern = (Thema/Aufgabe vom ...)

  1. (07.11.23) Laden Sie die ZIP-Datei des Skriptes zur Funktionalen Programmierung mit Haskell (im Anhang) und entpacken Sie dieses. Aus urheberrechtlichen Gründen ist die ZIP-Datei verschlüsselt. Das Passwort ist unsere Raumnummer in dem wir normalerweise Unterricht haben, als Zahlwort, ohne "und", kleingeschrieben. 
    Das Skript benutzen wir zusätzlich zum Unterricht. Es dient als Nachschlagewerk, zum Selbststudium und zum Teil auch als Aufgabensammlung.
  2. (07.11.23) Lesen Sie die drei Texte unter Vorbemerkungen am Beginn dieser Seite. Hinweis: zum Votum braucht nur der Abstract und die Zusammenfassung gelesen werden. Damit wird das grundsätzliche Anliegen des Textes deutlich. Natürlich darf jede Interessierte und jeder Interessierte den Text auch vollständig durchlesen und verstehen :-)
  3. (07.11.23) Arbeiten Sie die Präsentation Compiler und Interpreter (im Anhang) der FU Berlin mit Anmerkungen zum Unterricht durch.
  4. (07.11.23) Arbeiten Sie die Einführung in Haskell (im Anhang) durch.
  5. Wenn veröffentlicht (07.11.23): Arbeiten Sie die Aufgaben zur Einführung (im Anhang) durch.
  6. (09.11.23) Sie sollten sich jetzt schon einen kurzen Überblick über den Aufbau von Funktionsdefinitionen in Haskell (im Anhang) verschaffen, ggf. in WinHugs ausprobieren.
  7. (09.11.23) Arithmetische und logische Operationen in Haskell (vgl. Unterricht)
  8. (09.11.23) Pattern Matching Einführung mit Beispiel nand (vgl. Unterricht)
  9. (10.11.23) Festigung der Benutzung von Datentypen sowie arithmetischen und logischen Operatoren in Haskell
    Durcharbeiten der Seiten 0 bis 11 im Skript von Dr. Puhlmann. Hinweis: Die gelb markierten Anmerkungen beziehen sich auf unseren Unterricht.
    S.11: Suchen Sie sich aus Aufgabe 1 und 2 jeweils mindestens vier Ausdrücke aus für die Sie zuerst selbst den Typ bestimmen und dann mit Haskell vergleichen. Sie dürfen ihr Wissen natürlich auch mit mehr Ausdrücken testen :-). Aufgabe 3: Sie sollten die angegebenen Funktionen in ihrer Wirkung verstehen.
    Sie sollten nach Seite 11 mittlerweile ein gutes Gefühl im Umgang mit Typen, arithmetischen und logischen Operatoren in Haskell haben. Dies ist die Grundvoraussetzung für weiteres erfolgreiches Arbeiten in der Definition von einfachen und komplexen Funktionen.
  10. Wenn veröffentlicht (13.11.23): Aufgabenblatt 1 (im Anhang)
  11. Wenn veröffentlicht (16.11.23): Tupel in Haskell (mit Aufgaben zum Bruch) - im Anhang. Kgv und ggt  im Anhang und zusätzlich unter Materialsammlung.
  12. (23.11.23) Definition von Funktionen: Zur Festigung und Wiederholung durcharbeiten vom Skript S.12 bis S. 17 oben
  13. (21.11.23) Rekursion (1): Skript Seite 18, ohne Kap. 4.5, sowie in Kurzfassung zum Einstieg auf der Haskell-Rekursion-Seite
  14. (21.11.23) Zur eigenen Übung (je nach eigenem Kenntnis- und Wissenstand): Skript S. 20ff, Kap. 4.6 Übungen

    Die Datenstruktur Liste in Haskell
  15. Grundlagen zum Erlernen der Datenstruktur Liste sind das Skript, S. 23 - 32, inkl. Kap. 5.2 Tupel als Wiederholung bzw. Vertiefung, sowie natürlich Unterrichtsgeschehen mit Material und das u.a. Material.
  16. (28.11.23): Wiederholung Grundkonzepte und nicht-strikte Auswertung (im Anhang)
  17. Wenn veröffentlicht (28.11.23): Listen in Haskell - Kurz-Überblick (im Anhang)
  18. Wenn veröffentlicht (28.11.23): Listen in Haskell - Listengenerator (im Anhang)
  19. Wenn veröffentlicht (28.11.23): Die weiterführenden Aufgaben zu Listen (im Anhang)
  20. (29.11.23): Der CONS-Operator und dessen Verwendung bei der Datenstruktur Liste (im Anhang)
  21. Im Unterricht: Beispiel zu Diophantische Gleichungen und Aufgaben dazu.
  22. (08.12.23): Aufgaben zur Rekursion auf Listen (im Anhang)

  


Materialsammlung (PDF-Dateien) - zum Teil Ausgabe im Unterricht