Programmieren inHaskell Stefan Janssen Programmieren in Haskell Typ-Synonyme Algebraische Algebraische Datentypen Datentypen Leftovers Musik Stefan Janssen Abstraktion UniversitätBielefeld AGPraktischeInformatik October 29, 2014 Typsynonyme Programmieren inHaskell Neue Typnamen durch Typsynonyme: Stefan Janssen type Pair a b = (a,b) 1 Typ-Synonyme type Triple a b c = (a,b,c) 2 Algebraische 3 type OrdList a = [a] Datentypen definiert neue Namen, genannt Typ-Synonyme, für bereits Leftovers existieeremde Typen; hier im Beispiel für existierende Musik Tupel-Typen und Listen. Dient ausschliesslich der Abstraktion Dokumentation. newtype MyList a = [a] 1 führt ebenfalls einen NEUEN Typnamen analog zu [a] ein, der aber nicht als typgleich betrachtet wird. Verhindert gegenseitige Verwechslung von [a] und MyList a. Algebraische Datentypen Programmieren inHaskell Neue Datentypen werden als algebraische Datentypen Stefan Janssen eingeführt. Typ-Synonyme Werte des Datentyps sind Formeln, die aus Konstruktoren Algebraische zusammengesetzt sind Datentypen Leftovers Konstruktoren sind Funktionen, die man deklarieren, aber Musik nicht definieren muss. Abstraktion Konstruktornamen fangen mit Großbuchstaben an. Algebraische Datentypen können polymorph sein und Typ-Parameter haben. Meistens sind sie rekursiv - ein Wert kann einen Teil-Wert des gleichen Typs enthalten. keine Typ-Parameter, nicht rekursiv, nur zwei Werte Konstruktoren sind True und False → beide null-stellig (nullary (data) constructor) Funktionen nutzen pattern matching auf den Konstruktoren, z.B. der Operator &&: False && y = False 1 True && y = y 2 Beispiel Programmieren inHaskell Stefan data Bool = True | Janssen 1 2 False Typ-Synonyme Algebraische Datentypen Leftovers Musik Abstraktion → beide null-stellig (nullary (data) constructor) Funktionen nutzen pattern matching auf den Konstruktoren, z.B. der Operator &&: False && y = False 1 True && y = y 2 Beispiel Programmieren inHaskell Stefan data Bool = True | Janssen 1 2 False Typ-Synonyme Algebraische keine Typ-Parameter, nicht rekursiv, nur zwei Werte Datentypen Konstruktoren sind True und False Leftovers Musik Abstraktion Beispiel Programmieren inHaskell Stefan data Bool = True | Janssen 1 2 False Typ-Synonyme Algebraische keine Typ-Parameter, nicht rekursiv, nur zwei Werte Datentypen Konstruktoren sind True und False Leftovers Musik → beide null-stellig (nullary (data) constructor) Abstraktion Funktionen nutzen pattern matching auf den Konstruktoren, z.B. der Operator &&: False && y = False 1 True && y = y 2 Einen Typnamen mit Parametern nennt man gelegentlich „Typ-Konstruktor“ data T a b = ... 1 Typ-Konstruktor T “konstruiert” aus Typen a und b den Typ T a b Wir vermeiden die Bezeichnung “Typ-Konstruktor”. Apropos Konstruktor Programmieren inHaskell Stefan Janssen Typ-Synonyme „Konstruktor“ meint immer (Daten-)Konstruktor. Algebraische Datentypen Leftovers Musik Abstraktion Apropos Konstruktor Programmieren inHaskell Stefan Janssen Typ-Synonyme „Konstruktor“ meint immer (Daten-)Konstruktor. Algebraische Einen Typnamen mit Parametern nennt man gelegentlich Datentypen „Typ-Konstruktor“ Leftovers data T a b = ... Musik 1 Typ-Konstruktor T “konstruiert” aus Typen a und b den Typ Abstraktion T a b Wir vermeiden die Bezeichnung “Typ-Konstruktor”. data Temperatur = Temp Float Einheit 1 (Einziger) Konstruktor Temp hat zwei Argumente, deren Typen deklariert werden. data Temp = Temp Float Einheit -- erlaubt und 1 -- ueblich! 2 → Typkonstruktoren und (Daten-)Konstruktoren haben getrennte Namensräume Beispiel Programmieren data Einheit = Celsius | inHaskell 1 Fahrenheit | Stefan 2 Janssen Kelvin 3 Typ-Synonyme Neuer Typ mit genau drei Werten. Algebraische Datentypen Leftovers Musik Abstraktion (Einziger) Konstruktor Temp hat zwei Argumente, deren Typen deklariert werden. data Temp = Temp Float Einheit -- erlaubt und 1 -- ueblich! 2 → Typkonstruktoren und (Daten-)Konstruktoren haben getrennte Namensräume Beispiel Programmieren data Einheit = Celsius | inHaskell 1 Fahrenheit | Stefan 2 Janssen Kelvin 3 Typ-Synonyme Neuer Typ mit genau drei Werten. Algebraische Datentypen 1 data Temperatur = Temp Float Einheit Leftovers Musik Abstraktion
Description: