Übungsblätter werden jeweils Dienstags in der Vorlesung ausgegeben und sollen genau eine Woche später in der Vorlesung abgegeben werden.
- 1. Übung: Abgabe am 20.4. Übungsblatt
- 2. Übung: Abgabe am 27.4. Übungsblatt
- 3. Übung: Abgabe am 4.5. Übungsblatt
Für das HTML-Projekt: eine Beispielwebseite, das Modul Html.hs und das Modul Htmltools.hs.- 4. Übung: Abgabe am 11.5. Übungsblatt Die Beispieltabelle für Aufgabe 17.
- 5. Übung: Abgabe am 18.5. Übungsblatt Das Beispielprogramm für Aufgabe 23.
- 6. Übung: Abgabe am 25.5. Übungsblatt
- 7. Übung: Abgabe am 1.6. Übungsblatt Das Modul Tree.hs für Aufgabe 29.
- 8. Übung: Abgabe am 8.6. Übungsblatt
- 9. Übung: Abgabe am 15.6. Übungsblatt
- 10. Übung: Abgabe am 22.6. Übungsblatt Ein kleines Beispiellabyrinth für Aufgabe 40.
- 11. Übung: Abgabe am 29.6. Übungsblatt
- 12. Übung: Abgabe am 6.7. Übungsblatt
- 13. Übung: Abgabe am 13.7. Übungsblatt
- 14. Übung: keine Abgabe Übungsblatt
Klaus Höppner - klh@informatik.uni-kiel.de Last modified: Wed Dec 22 18:09:26 MET 2004Hugs
Hugs ist ein frei verfügbarer Interpreter für die Programmiersprache Haskell. Sie können zur Bearbeitung der Übungsaufgaben entweder die Installation auf den Uni-Rechnern verwenden, aber sich Hugs auch auf Ihrem eigenen PC installieren.Dokumentation
- Webseite zum Hugs-System im Grundausbildungspool/Lehrstuhl.
- Offizielle Hugs-Homepage.
- Online-Manual für Hugs. Download als HTML oder Postscript ist hier möglich.
- A Gentle Introduction To Haskell ist eine Online-Einführung in die Sprache Haskell. Dort gibts auch Postscript-Versionen zum Runterladen.
- Einen Haskell-Kurs in Deutsch von Ralf Hinze gibts auch.
Software
Vorkompilierte Versionen für Windows, Macintosh und Linux sowie die Sourcen finden Sie hier. Achtung: Das Linux-rpm ist in Bezug auf die Abhängigkeitsanforderungen ziemlich idiotisch gemacht. Wer neuere Versionen als die geforderten installiert hat, kann das Paket mit "rpm -i --nodeps hugs98-Feb2000-1.i386.rpm" trotzdem installieren. Falls es dabei Probleme gibt oder nur ältere Versionen mancher Libraries installiert sind, kann man von der obigen URL auch das Source-RPM runterladen und ein neues Binary-RPM erzeugen. Das funktioniert sehr gut.PAKCS
PAKCS (Portland Aachen Kiel Curry System) ist ein Interpreter für die logisch-funktionale Programmiersprache Curry. Eine PAKCS Version für Solaris, Linux oder Mac OS kann hier heruntergeladen werden. Bitte beachten Sie auch die Installationsanweisungen, da es keine vorkompilierte Version gibt.Leider benötigt PAKCS SICStus Prolog, einen nicht frei verfügbarer Prolog-Compiler. Die Uni besitzt jedoch Studentenlizenzen für SICStus Prolog, die Sie im Sekretariat unseres Lehrstuhls beantragen können.
Sie können PAKCS jedoch problemlos auf den Rechern des Lehrstuhls unter Verwendung ihres Accounts ausführen.
Eine andere Möglichkeit ist der Münster Curry Compiler. Die vorkompilierte Version für Linux (x86) und Mac OS X benötigt lediglich einen Gnu C Compiler.
Benutzung von PAKCS auf den Lehrstuhlrechnern
PAKCS ist unter dem Login "pakcs" installiert. Der Aufruf erfolgt durch Eingabe von/home/pakcs/bin/curry2prologSie können auch "/home/pakcs/bin/" in ihren Pfad aufnehmen und PAKCS dann durch Eingabe von "curry2prolog" starten. Nach dem Start steht eine interaktive Umgebung zur Verfügung, die der von Hugs gleicht. Durch Eingabe von:herhalten Sie eine Liste mit Befehlen, die Sie in PAKCS eingeben können. Die wichtigsten Befehle sind:
:l prog Einlesen eines Programms prog.curry :r Erneutes Einlesen des zuletzt geladenen Programms ausdruck Auswertung eines Ausdrucks. Hierbei gibt es einen wichtigen Unterschied zu Hugs: Aufgrund des möglichen Nichtdeterminismus in logisch-funktionalen Sprachen können evtl. mehrere Ergebnisse/Lösungen zu einem Ausdruck existieren. Zunächst wird aber immer nur ein Ergebnis berechnet. Durch Eingabe eines Semikolons und Return/Enter können Sie die Berechnung eines weiteren Ergebnisses anfordern. Sollte kein weiteres Ergebnis existieren, antwortet PAKCS mit "No more solutions." Wenn Sie statt eines Semikolons direkt Return/Enter drücken, wird die Berechnung sofort beendet. :t ausdruck Typ des Ausdrucks anzeigen :e funktionsname Auswertungsregeln einer Funktion anzeigen :q PAKCS beenden Dokumentation
- Auf den Webseiten zur Sprache Curry finden Sie eine Menge Informationen über die Sprache selbst sowie über existierende Implementierungen., insbesondere auch über PAKCS.
- Der Curry-Report beschreibt ausführlich die Sprache Curry.
- Manual zum PAKCS-System
- Einige Beispielprogramme finden Sie unter "/home/pakcs/pakcs/examples".
Eingabe von Programmtexten
Achten Sie bei der Eingabe von Curry-Programmen darauf, keine Tabulatoren zu verwenden, sondern die Einrückungen nur durch Leerzeichen zu erreichen. Der Parser von PAKCS kommt mit Tabulatoren nicht zurecht. Wenn Sie aus Versehen doch einen Tabulator verwenden, wird PAKCS einen Syntaxerror melden oder ungefähr folgende Fehlermeldung ausgeben:Lexical error at line 16, column 8. Encountered: "\t" (9), after : ""Falls Sie zur Eingabe den den (X)Emacs verwenden wollen, können Sie einen speziellen Curry-Modus verwenden, bei dem z.B. die Schlüsselwörter eingefärbt werden. Legen Sie dazu eine Datei mit dem Namen ".emacs" (den Punkt nicht vergessen!) in ihrem Home-Verzeichnis an und fügen Sie dort folgende Zeilen ein:(setq load-path (cons "/home/curry/lib/" load-path)) (setq auto-mode-alist (append auto-mode-alist '(("\\.curry$" . curry-mode) ("\\.lcurry$" . literate-curry-mode)))) (autoload 'curry-mode "curry-mode" "Major mode for editing Curry programs." t) (autoload 'literate-curry-mode "curry-mode" "Major mode for editing literate Curry programs." t) (add-hook 'curry-mode-hook 'turn-on-curry-font-lock) (add-hook 'curry-mode-hook 'turn-on-curry-decl-scan) (add-hook 'curry-mode-hook 'turn-on-curry-indent) (add-hook 'curry-mode-hook 'turn-on-curry-hugs)