programmierung.jpg

 

Listen sind in Haskell ein mächtiges Werkzeug. Mit Listcomprehensions werden sie, um noch einiges mächtiger, denn diese erlauben es komplexe Aufgaben in minimalen Programmieraufwand zu erledigen. 

Hier zeige ich dir einige Beispiele, wie du Listcomprehensions in Haskell verwenden kannst. 

Kreuzprodukt

Wir schreiben eine Funktion, welche die Elemente aus zwei Listen so kombiniert, dass alle möglichen Kombinationen (a,b) mit a aus der ersten Liste und b aus der zweiten Liste entstehen. 

kreuzprodukt :: [a] -> [b] -> [(a, b)]
kreuzprodukt listeA listeB = [(a, b) | a <- listeA, b <- listeB]

 

Geordnete Paare

geordnetePaare :: [Integer] -> [(Integer, Integer)]
geordnetePaare liste = [(x, y) | x <- liste, y <- liste, x <= y]

 

Zusammenhängen

Wir schreiben eine Funktion zusammenhaengen, die eine Liste von Listen zu einer zusammenhängenden Liste umwandelt. 

zusammenhaengen :: [[a]] -> [a]
zusammenhaengen liste = [x | subListe <- liste, x <- liste]

 

Zweite Element aus einer Liste von Tupeln

Wir wollen eine Funktion schreiben, die aus einer Liste von Tupeln (a, b) den Wert b nimmt und in eine neue Liste schreibt.

zweite :: [(a, b)] -> [b]
zweite liste = [b | (a, b) <- liste]

 

Durch sieben teilbar

Wir schrieben eine Funktion, die alle Elemente, die durch 7 teilbar sind, herausfiltert.

teilbar7 :: [a] -> [a]
teilbar7 liste = [a | a <- liste, (mod a 7) == 0]

 

Teiler

Wir schreiben eine Funktion, die zu einer gegebenen Zahl alle Teiler berechnet.

teiler :: Integer -> [Integer]
teiler n = [x | x <- [1..n], (mod n x) == 0] 

 

Primzahlen

Wir schreiben eine Funktion, die alle Primzahlen bis zu einer Zahl n wiedergibt.

primzahlen :: Integer -> [Integer]
primzahlen n = [x | x <- [1..n], length(teiler x) == 2]

 

Sortiert 

Wir schreiben eine Funktion, die prüft, ob eine Liste sortiert ist. Als sortiert gilt eine Liste, wenn die Liste aufsteigend geordnet ist.

sortiert :: [Num a] => [a] -> Bool
sortiert [] = True
sortiert (x:xs) = length([a | a <- xs, a < h]) == 0 && sortiert xs

 


Konversation wird geladen