Tupel
Eine Folge von Werten:
(7+2, 2*7)
(9, 14) : int * int
Rekursion
Gleichung die auf sich selbst beruht (auch Schleife)
x^0 = 1
x^n = x · x^(n−1) für n > 0
Iter
Iter rocks!
Alternative für Schleifen. Wird n mal ausgeführt
first
unbestimmte Iteration
Stoppt beim ersten Mal wenn Bedingung eintritt
polymorph
Tyapunabhängig
Bsp: alpha = int
iterup
zählt von x nach n hoch
for(i=0; i>y;i++)
iterdown
zählt von x nach n runter
for(i=10; i<y;i--)
concat
liefert zu einer Liste von Listen die Konkatenation der Elementlisten:
concat [xs1, . . . ,xsn] = xs1@. . .@xsn
tabulate
liefert für eine Zahl n ≥ 0 und eine Prozedur f eine Liste der Länge n wie folgt:
tabulate(n, f ) = [ f (0), . . . , f (n −1)]
map
wendet eine Prozedur f auf alle Elemente einer Liste an:
map f [x1, . . . ,xn] = [ f x1, . . . , f xn]
filter
liefert zu einer Liste die Liste der Elemente, für die eine gegebene Prozedur true liefert:
filter (fn x => x<0) [0, ~1, 2, ~3, ~4]
[~1, ~3, ~4] : int list
exists and all
testet, ob eine gegebene Prozedur für mindestens ein Element einer Liste true liefert:
exists (fn x => x<0) [1, 2, 3]
false : bool
exists (fn x => x<0) [1, ~2, 3]
true : bool
Faltung
wendet eine Funktion auf jedes Listenelement an und braucht einen Startwert
Head/tail
Liefern Kopf der Liste (erstes Element)/Rest der Liste
Strings
Zeichenfolge
val explode : string→char list
val implode : char list→string
konvertieren zwischen Strings und Zeichenlisten