Name
|
Haskell Curry
amerikanischer Mathematiker und Logiker, 1900 - 1982
Zeitgenosse von Moses Schönfinkel
deutscher Logiker
|
| |
Vorteile
|
|
|
produktivitätssteigernd
Faktor 5 - 25
|
|
kurzer Code
|
|
weniger Fehler
hohe Zuverlässigkeit
|
| |
Haskell
|
auch als Spezifikationssprache einsetzbar
|
|
aber: ausführbar
|
| |
Zuverlässigkeit |
|
|
keine Seiteneffekte
|
|
keine Zuweisungen
|
|
keine Schleifen
|
|
keine Zeiger
|
| |
?
|
Beispiel: Quicksort
|
|
qsort :: [a] -> [a]
qsort []
= []
qsort (x : xs)
= qsort lessX ++ [x] ++ qsort greaterX
where
lessX = [ y | y <- xs, y < x ]
greaterX = [ y | y <- xs, y >= x ]
|
Statische Typisierung
|
kein core dump
|
|
keine class cast exception
|
| |
Polymorphie
|
Wiederverwendbarkeit
|
| |
Abstraktion
|
Funktionen höherer Ordnung
in der Mathematik: Funktionale
|
| |
Verständlichkeit
|
Variablen im mathematischen Sinn
überall kann etwas durch etwas Gleiches ersetzt werden
|
| |
Keine Zeiger
|
keine null pointer exception
|
| |
automatische Speicherverwaltung
|
(natürlich)
|
| |
Bedarfsauswertung
lazy evaluation
call by need
|
Auswertung eines Ausdruck erst bei Benötigung des Wertes
|
| |
?
|
Wo ist C besser?
|
|
- Quicksort: sortieren direkt im Feld
- weniger Speicher
- weniger Laufzeit
- weniger Zwischenergebnisse
|
| |
Ansatz
|
Schichtenmodell: Maschinensprache, C, Haskell
|
| |