Teachers Paradise School Supplies Teacher Resources Free Encyclopedia
Teachers Paradise FREE Teaching Resources
Home Arts Crafts Audio Visual Equipment Office Supplies Teacher Resources
Hauptseite | See live article

Haskell (Programmiersprache)

wegen des englischen Kunsthistorikers Francis Haskell (1928-2000) siehe: Francis Haskell


Haskell ist eine funktionale Programmiersprache, benannt nach dem Mathematiker Haskell Brooks Curry. Haskell ist statisch typisiert, unterstützt die verzögerte Auswertung (engl. lazy evaluation), ist eine funktionale Sprache höherer Ordnung und erlaubt die Verwendung polymorpher Datentypen. Die aktuellste Version der Sprache ist Haskell 98.

Beispiele

Die klassische Definition der Fakultätsfunktion:

fac 0 = 1
fac n = n * fac (n - 1)

Eine elegante Definition, die Haskells Notation für Listen benützt:
fac n = product [1..n]

Die naive Implementierung der
Fibonacci-Funktion:
fib 0 = 0
fib 1 = 1
fib n = fib (n - 2) + fib (n - 1)

Eine schnelle Implementierung derselben Funktion:
fibs = 0 : 1 : (zipWith (+) fibs (tail fibs))

Diese Definition erzeugt eine unendliche Liste und faltet diese mit der zipWidth Funktion. Unendliche Datenstrukturen können dank lazy evaluation in Haskell elegant dargestellt werden.

Der QuickSort-Algorithmus, formuliert in Haskell:

qsort []     = []
qsort (x:xs) = qsort elts_lt_x ++ x ++ qsort elts_greq_x
                 where
                   elts_lt_x   = [y | y <- xs, y < x]
                   elts_greq_x = [y | y <- xs, y >= x]

Die erste Zeile gibt an, dass die Funktion auf eine leere Liste angewendet wieder eine leere Liste ergeben soll. Die zweite Zeile sortiert rekursiv nicht-leere Listen: das erste Element x wird als mittleres Element der Ergebnisliste verwendet. Davor werden sortiert alle kleineren, dahinter alle größeren Elemente eingeordnet. Die letzten beiden Zeilen stehen in einer lokalen Definition. Listenbeschreibungen werden dazu verwendet, aus der Restliste xs alle kleineren bzw. größeren Elemente als x auszuwählen. Leider ist diese Quicksort-Implementierung sehr ineffizient: Das Kopieren und Verlinken vieler kleiner Listen sorgt für eine durchschnittliche Laufzeit von .

Weblinks




Pay for Educational Supplies & Teaching Supplies with Visa, Master Card, American Express, Discover or Paypal.
TeachersParadise.com HOME | Safe Shopping Guarantee | Help Desk
All trademarks & brands are the property of their respective owners.
Legal Notice 2000-2008 TeachersParadise.com, Inc. All Rights Reserved