Programmieren in Haskell

Werbung
Programmieren in Haskell
Programmieren in Haskell
1
Was wir heute machen
• Kurze Vorstellung
• Eine Regel
• Administrative Hinweise
• Haskell-Teaser
• Aufgabe für’s Wochenende
Programmieren in Haskell
2
Dr. Marc Rehmsmeier
Raum: M3-120
Tel.: 0521/106-2905
Email: [email protected]
Programmieren in Haskell
3
Eine Regel
Ruhe.
Programmieren in Haskell
4
Hinweise zu den Vorlesungen
Hinweise zu den Vorlesungen “Algorithmen & Datenstrukturen I” und
“Programmieren in Haskell” findet Ihr hier:
http://www.techfak.uni-bielefeld.de/ags/pi/lehre/AuDIWS06/
→ Folien als pdf
→ Übungsblätter
→ Hinweise zur Haskell-Installation
Programmieren in Haskell
5
Hugs-Download
Für Windows:
http://cvs.haskell.org/Hugs/downloads/2006-09/WinHugs-Sep2006.exe
Programmieren in Haskell
6
:?
Ein bißchen Haskell
answer :: Int
answer = 42
Programmieren in Haskell
8
Ein bißchen Haskell
answer :: Int
answer = 42
yes :: Bool
yes = True
Programmieren in Haskell
8
Ein bißchen Haskell
answer :: Int
answer = 42
yes :: Bool
yes = True
greater :: Bool
greater = (answer > 71)
Programmieren in Haskell
8
Main> answer
42
Main> yes
True
Main> greater
False
Programmieren in Haskell
9
square :: Int -> Int
square x = x*x
Programmieren in Haskell
10
square :: Int -> Int
square x = x*x
allEqual :: Int -> Int -> Int -> Bool
allEqual n m p = (n==m) && (m==p)
Programmieren in Haskell
10
square :: Int -> Int
square x = x*x
allEqual :: Int -> Int -> Int -> Bool
allEqual n m p = (n==m) && (m==p)
maxi :: Int -> Int -> Int
maxi n m
| n >= m
= n
| otherwise = m
Programmieren in Haskell
10
Main> square 5
25
Main> allEqual 1 1 2
False
Main> maxi 23 117
117
Programmieren in Haskell
11
Ein ziemlich ausgefeiltes Beispiel, das Ihr jetzt noch nicht
verstehen müßt
qsort :: (Ord a) => [a] -> [a]
qsort []
= []
qsort (a:as) = qsort [b | b <- as, b < a]
++ [a]
++ qsort [ b | b <- as, b >= a]
Programmieren in Haskell
12
Ein ziemlich ausgefeiltes Beispiel, das Ihr jetzt noch nicht
verstehen müßt
qsort :: (Ord a) => [a] -> [a]
qsort []
= []
qsort (a:as) = qsort [b | b <- as, b < a]
++ [a]
++ qsort [ b | b <- as, b >= a]
Main> qsort [1,4,2,2,4]
[1,2,2,4,4]
Programmieren in Haskell
12
Ein ziemlich ausgefeiltes Beispiel, das Ihr jetzt noch nicht
verstehen müßt
qsort :: (Ord a) => [a] -> [a]
qsort []
= []
qsort (a:as) = qsort [b | b <- as, b < a]
++ [a]
++ qsort [ b | b <- as, b >= a]
Main> qsort [1,4,2,2,4]
[1,2,2,4,4]
Main> (1:4:2:2:4:[])
[1,4,2,2,4]
Programmieren in Haskell
12
Listenkonkatenation
Hugs.Base> [1,4,2] ++ [2,4]
[1,4,2,2,4]
Programmieren in Haskell
13
Listenkonkatenation
Hugs.Base> [1,4,2] ++ [2,4]
[1,4,2,2,4]
Zeichenketten (Strings) sind auch Listen:
Hugs.Base> "Haskell " ++ "ist " ++ "toll!"
"Haskell ist toll!"
Programmieren in Haskell
13
Listenkonkatenation
Hugs.Base> [1,4,2] ++ [2,4]
[1,4,2,2,4]
Zeichenketten (Strings) sind auch Listen:
Hugs.Base> "Haskell " ++ "ist " ++ "toll!"
"Haskell ist toll!"
Main> qsort "Haskell ist toll!"
" !Haeikllllosstt"
Programmieren in Haskell
13
Coole Sachen mit Listen
Die ersten 4 Elemente:
Main> take 4 "Robert Giegerich"
"Robe"
Programmieren in Haskell
14
Coole Sachen mit Listen
Die ersten 4 Elemente:
Main> take 4 "Robert Giegerich"
"Robe"
Unendliche (!) Listen:
Main> [1..]
[1,2,3,4,5,6,7,8,9,10,11,
Programmieren in Haskell
14
Coole Sachen mit Listen
Die ersten 4 Elemente:
Main> take 4 "Robert Giegerich"
"Robe"
Unendliche (!) Listen:
Main> [1..]
[1,2,3,4,5,6,7,8,9,10,11,
Die ersten 4 natürlichen Zahlen (!!):
Main> take 4 [1..]
[1,2,3,4]
Programmieren in Haskell
14
Eure Aufgabe für’s Wochenende
1. Hugs installieren oder mit Techfak-Installation vertraut machen
2. Beispiele ausprobieren
Programmieren in Haskell
15
Herunterladen