Einleitung
Übersicht
Vorwort:
In dieser Arbeit werden wichtige Konzepte der funktionalen Programmierung mit Haskell vorgestellt, u.a.
rekursive Datentypen, deren Definitionen und der "Beweis" durch Induktion. Grob gesagt, geht es um verschiedene Zahlenmengen und die
dazugehörigen Operationen.
In den vorangegangenen Vorträgen wurden bereits drei verschiedene Typen (Integer, Int und Float) zur Darstellung von Zahlen vorgestellt. Nun ist es
wünschenswert, weitere Typen zur Verfügung zu haben, um z.B. rationale oder komplexe Zahlen darstellen und verarbeiten zu können.
Die Formeln für die unterschiedlichen arithmetischen Funktionen differieren stark. Daher ist es schwer, eine Division von Integern mit einer
Real-Division zu vergleichen. Ebenso ist es nicht möglich, auf komplexe Zahlen Vergleichsoperatoren anzuwenden.
Haskell bietet eine grosse Auswahl an verschiedenen Typklassen zur Beschreibung von Zahlen, von denen einige vorgestellt
werden (Num, Real, Integral und Fractional). Obwohl in anderen Programmiersprachen manche Datentypen als primitiv dargestellt sind, erhalten sie hier
passende Deklarationen. Dabei geht es primär um die dahinterstehenden Konzepte und nicht um die Deklarationen an sich.
Es werden Beispiele gegeben und eine mächtige Funktionsvariante (Fold) wird vorgestellt, welche die Arbeit vereinfacht und für Effizienz sorgt.
Viele Grundlagen (Datentypen, Klassen, Instanzen...) wurden bereits in den vorangegangenen Vorträgen behandelt und somit wird das Wissen hier
zum Teil vorausgesetzt.
Hinweise:
Diese Ausarbeitung hat laut Aufgabenstellung als Grundlage explizit das dritte Kapitel des Buches "Introduction to Functional Programming using Haskell"
von Richard Bird [1]. Deshalb wird im Weiteren absichtlich auf korrekte Fussnoten verzichtet, die sich auf diesen Autoren beziehen, um die
Übersichtlichkeit zu bewahren. Auch orientiert sich der Inhalt und somit der Aufbau stark an dem vorgegebenen Kapitel.
Die Ausarbeitung beruht auf Haskell 1.3. Als Interpreter für die Beispiele wurde HUGS98 (Haskell Users Gofer System) gewählt.
Er wurde von Mark Jones an der Universität Nottingham entwickelt und basiert auf dem
Haskell-98-Standard. Für verschiedene Betriebssysteme ist er kostenlos auf der
offiziellen Seite zum Thema Haskell unter
http://cvs.haskell.org/Hugs/pages/downloading.htm zu beziehen. Auf
diesen Seiten sind ebenso Tutorials für die Bedienung von Hugs zu finden. Lohnenswert, ist auf jeden Fall ein Besuch der Seite
http://www.haskell.org für viele weitere Informationen zum Thema Haskell.