Info SPLib Funktionen
if'
|
Bool |
-> |
a |
-> |
a |
-> |
a |
x |
|
y |
|
z |
|
gibt y zurück, falls x wahr ist, ansonsten z |
id
|
a |
-> |
a |
x |
|
x (Identität) |
show
|
a |
-> |
String |
x |
|
wandelt x in einen String um |
read
|
String |
-> |
a |
x |
|
wandelt String x in entsprechenden Wert von Typ a um. Der Rückgabetyp muss explizit angegeben werden, z.B. (read "[1,2,3]")::[Int] |
trace
|
String |
-> |
a |
-> |
a |
x |
|
y |
|
gibt x auf der Konsole (stderr) aus und gibt y zurück |
++
|
[a] |
-> |
[a] |
-> |
[a] |
lst1 |
|
lst2 |
|
hängt lst2 an lst1 an, z.B. [1,2]++[3,4] = [1,2,3,4] |
.
|
(b -> c) |
-> |
(a -> b) |
-> |
(a -> c) |
f |
|
g |
|
die Funktion, welche x auf (f (g x)) abbildet (Komposition) |
fst
|
(a,b) |
-> |
a |
(x,y) |
|
x (erster Wert eines Tupels) |
snd
|
(a,b) |
-> |
b |
(x,y) |
|
y (zweiter Wert eines Tupels) |
&&
|
Bool |
-> |
Bool |
-> |
Bool |
a |
|
b |
|
a && b (Konjunktion) |
||
|
Bool |
-> |
Bool |
-> |
Bool |
a |
|
b |
|
a || b (Disjunktion) |
not
|
Bool |
-> |
Bool |
a |
|
Negation von a |
==
|
a |
-> |
a |
-> |
Bool |
x |
|
y |
|
x == y (Gleichheit) |
/=
|
a |
-> |
a |
-> |
Bool |
x |
|
y |
|
x /= y (Ungleichheit) |
<
|
a |
-> |
a |
-> |
Bool |
x |
|
y |
|
x < y |
<=
|
a |
-> |
a |
-> |
Bool |
x |
|
y |
|
x <= y |
>
|
a |
-> |
a |
-> |
Bool |
x |
|
y |
|
x > y |
>=
|
a |
-> |
a |
-> |
Bool |
x |
|
y |
|
x >= y |
+
|
Int |
-> |
Int |
-> |
Int |
a |
|
b |
|
a + b |
-
|
Int |
-> |
Int |
-> |
Int |
a |
|
b |
|
a - b |
*
|
Int |
-> |
Int |
-> |
Int |
a |
|
b |
|
a * b |
^
|
Int |
-> |
Int |
-> |
Int |
a |
|
b |
|
a ^ b (Potenzieren) |
div
|
Int |
-> |
Int |
-> |
Int |
a |
|
b |
|
wie oft b in a passt (ganzzahlige Division) |
mod
|
Int |
-> |
Int |
-> |
Int |
a |
|
b |
|
Rest von a geteilt durch b (Modulo) |
min
|
Int |
-> |
Int |
-> |
Int |
a |
|
b |
|
gibt a zurück, falls a < b , ansonsten b |
max
|
Int |
-> |
Int |
-> |
Int |
a |
|
b |
|
gibt a zurück, falls a > b , ansonsten b |
isEmpty
|
[a] |
-> |
Bool |
lst |
|
gibt True zurück, falls lst keine Elemente enthält, ansonsten False |
length
|
[a] |
-> |
Int |
lst |
|
gibt Anzahl der Elemente in lst zurück |
get
|
Int |
-> |
[a] |
-> |
a |
i |
|
lst |
|
gibt Element mit Index i in lst zurück; erstes Element hat Index 0 |
first
|
[a] |
-> |
a |
lst |
|
gibt erstes Element in lst zurück |
last
|
[a] |
-> |
a |
lst |
|
gibt letztes Element in lst zurück |
set
|
a |
-> |
Int |
-> |
[a] |
-> |
[a] |
el |
|
i |
|
lst |
|
setzt Element mit Index i in lst auf den Wert el |
prepend
|
a |
-> |
[a] |
-> |
[a] |
el |
|
lst |
|
hängt el vorne an lst an |
append
|
a |
-> |
[a] |
-> |
[a] |
el |
|
lst |
|
hängt el hinten an lst an |
insert
|
a |
-> |
Int |
-> |
[a] |
-> |
[a] |
el |
|
i |
|
lst |
|
fügt el in lst ein, sodass es in der neuen Liste Index i hat |
remove
|
Int |
-> |
[a] |
-> |
[a] |
i |
|
lst |
|
entfernt Element mit Index i aus lst |
removeFirst
|
[a] |
-> |
[a] |
lst |
|
entfernt erstes Element aus lst |
removeLast
|
[a] |
-> |
[a] |
lst |
|
entfernt letztes Element aus lst |
take
|
Int |
-> |
[a] |
-> |
[a] |
n |
|
lst |
|
gibt die ersten n Elemente von lst zurück. Falls lst weniger als n Elemente hat, wird die ganze Liste lst zurückgegeben |
drop
|
Int |
-> |
[a] |
-> |
[a] |
n |
|
lst |
|
entfernt die ersten n Elemente von lst . Falls lst weniger als n Elemente hat, wird die leere Liste zurückgegeben |
reverse
|
[a] |
-> |
[a] |
lst |
|
dreht die Reihenfolge der Elemente in lst um |
sort
|
[a] |
-> |
[a] |
lst |
|
sortiert die Elemente in lst |
sortBy
|
(a -> a -> Ordering) |
-> |
[a] |
-> |
[a] |
f |
|
lst |
|
sortiert die Elemente in lst nach der Ordnung, welche durch f beschrieben wird |
concat
|
[[a]] |
-> |
[a] |
lst |
|
Konkateniert Listen aus lst miteinander, z.B. concat [a,b,c] = a ++ b ++ c |
zip
|
[a] |
-> |
[b] |
-> |
[(a,b)] |
lst1 |
|
lst2 |
|
verknüpft die Elemente der beiden Listen paarweise, z.B. zip [1,2,3] ['a','b','c'] = [(1,'a'),(2,'b'),(3,'c')] . Falls eine Liste kürzer ist als die andere, dann werden die überschüssigen Elemente der längeren Liste ignoriert |
map
|
(a -> b) |
-> |
[a] |
-> |
[b] |
f |
|
lst |
|
wendet f auf jedes Element von lst an, z.B. map f [1,2,3] = [(f 1), (f 2), (f 3)] |
filter
|
(a -> Bool) |
-> |
[a] |
-> |
[a] |
f |
|
lst |
|
entfernt alle Elemente x aus lst , für die (f x) == False |
reduce
|
(a -> a -> a) |
-> |
[a] |
-> |
a |
f |
|
lst |
|
angenommen lst=[x1,x2,x3] , dann wird (f (f x1 x2) x3) zurückgegeben. Falls lst aus nur einem Element besteht, wird dieses zurückgegeben. Undefiniert wenn lst leer ist. |
foldl
|
(b -> a -> b) |
-> |
b |
-> |
[a] |
-> |
b |
f |
|
acc |
|
lst |
|
angenommen lst=[x1,x2,x3] , dann wird (f (f (f acc x1) x2) x3) zurückgegeben. Falls lst leer ist, wird acc zurückgegeben |
foldr
|
(a -> b -> b) |
-> |
b |
-> |
[a] |
-> |
b |
f |
|
acc |
|
lst |
|
angenommen lst=[x1,x2,x3] , dann wird (f x1 (f x2 (f x3 acc))) zurückgegeben. Falls lst leer ist, wird acc zurückgegeben |
find
|
(a -> Bool) |
-> |
[a] |
-> |
a |
f |
|
lst |
|
gibt das erste Element x aus lst zurück, für welches f x == True gilt. Die Funktion ist undefiniert, falls so ein Element nicht existiert. |
isEmpty
|
(Map k v) |
-> |
Bool |
m |
|
gibt True zurück gdw. m leer ist |
size
|
(Map k v) |
-> |
Int |
m |
|
gibt Anzahl der Elemente in m zurück |
empty
|
(Map k v) |
gibt eine leere Map zurück |
fromList
|
[(k,v)] |
-> |
(Map k v) |
lst |
|
wandelt lst in eine Map um. Falls ein Schlüssel mehrfach vorkommt, wird der letzte dazugehörige Wert genommen |
toList
|
(Map k v) |
-> |
[(k,v)] |
m |
|
wandelt m in eine Liste von Tupeln um |
hasKey
|
k |
-> |
(Map k v) |
-> |
Bool |
key |
|
m |
|
gibt True zurück gdw. m den Schlüssel key enthält |
get
|
k |
-> |
(Map k v) |
-> |
v |
key |
|
m |
|
gibt den Wert in m mit Schlüssel key zurück. Undefiniert, falls der Schlüssel nicht existiert. |
set
|
v |
-> |
k |
-> |
(Map k v) |
-> |
(Map k v) |
val |
|
key |
|
m |
|
setzt den Wert von Schlüssel key in m auf val |
remove
|
k |
-> |
(Map k v) |
-> |
(Map k v) |
key |
|
m |
|
entfernt den Schlüssel key aus m |
Hinweis: Ein Knoten v
wird durch eine Liste von Int
beschrieben (type Path = [Int]
), welche den Pfad zu diesem Knoten beschreiben. Beispiele:
[]
= Wurzelknoten
[2]
= drittes Kind vom Wurzelknoten
[0,2]
= drittes Kind vom ersten Kind vom Wurzelknoten
allNodes
|
(Tree a) |
-> |
[Path] |
tree |
|
gibt Liste aller Knoten von tree zurück |
size
|
(Tree a) |
-> |
Int |
tree |
|
Anzahl der Knoten in tree |
degree
|
Path |
-> |
(Tree a) |
-> |
Int |
v |
|
tree |
|
Anzahl der Kinder von Knoten v in tree |
pathExists
|
Path |
-> |
(Tree a) |
-> |
Bool |
v |
|
tree |
|
gibt True zurück gdw. tree einen Knoten mit Pfad v besitzt |
getLabel
|
Path |
-> |
(Tree a) |
-> |
a |
v |
|
tree |
|
gibt Beschriftung von Knoten v in tree zurück |
setLabel
|
a |
-> |
Path |
-> |
(Tree a) |
-> |
(Tree a) |
label |
|
v |
|
tree |
|
setzt Beschriftung von Knoten v in tree auf label |
rootLabel
|
(Tree a) |
-> |
a |
tree |
|
gibt Beschriftung vom Wurzelknoten in tree zurück |
rootDegree
|
(Tree a) |
-> |
Int |
tree |
|
gibt Anzahl der Kinder vom Wurzelknoten in tree zurück |
subtree
|
Path |
-> |
(Tree a) |
-> |
(Tree a) |
v |
|
tree |
|
gibt den Teilbaum von tree , welcher ab Knoten v beginnt |
appendSubtree
|
(Tree a) |
-> |
Path |
-> |
(Tree a) |
-> |
(Tree a) |
subtree |
|
v |
|
tree |
|
hängt den Teilbaum subtree an den Knoten v in tree |