annotate exercises/src/Exercise_6.hs @ 14:0d15fb5d5ade

week 6
author Markus Kaiser <markus.kaiser@in.tum.de>
date Wed, 21 Nov 2012 19:45:54 +0100
parents
children bef891fc07b4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
1 module Exercise_6 where
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
2 import Data.Char
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
3 import Test.QuickCheck
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
4
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
5 {- Library DO NOT CHANGE -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
6 type PairList = [(Int,Int)]
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
7 {- End Library -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
8
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
9
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
10 {---------------------------------------------------------------------}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
11 {- Aufgabe G6.1 -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
12
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
13 instance Num b => Num (a -> b) where
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
14 f + g = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
15 f - g = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
16 f * g = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
17 negate f = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
18 abs f = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
19 signum f = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
20 fromInteger x = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
21
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
22
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
23
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
24 {---------------------------------------------------------------------}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
25 {- Aufgabe G6.2 -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
26
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
27 foldl' f z [] = z
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
28 foldl' f z ( x : xs ) = foldl' f ( f z x ) xs
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
29
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
30 foldr' f z [] = z
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
31 foldr' f z ( x : xs ) = f x ( foldr' f z xs )
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
32
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
33
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
34 ffoldl = foldl' . foldl'
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
35
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
36 oo = (.).(.)
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
37
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
38
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
39
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
40 {---------------------------------------------------------------------}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
41 {- Aufgabe G6.3 -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
42
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
43
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
44 a1 = (div 5)
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
45 a2 = (`div` 5)
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
46
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
47 b1 = (+ 7)
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
48 b2 = ((+) 7)
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
49
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
50 c1 = map (:[])
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
51 c2 = map ([]:)
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
52
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
53 d1 = flip . flip
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
54 d2 = id
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
55
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
56 e1 x y z = [x, y, z]
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
57 e2 x y z = x : y : z
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
58
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
59
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
60
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
61 {---------------------------------------------------------------------}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
62 {- Aufgabe G6.4 -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
63
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
64 {-
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
65 Lemma: reverse = foldl (\xs x -> x : xs) []
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
66
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
67 Base case:
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
68 To show:
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
69
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
70 Induction step:
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
71 IH:
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
72 To show:
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
73 -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
74
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
75
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
76
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
77 {---------------------------------------------------------------------}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
78 {- Aufgabe G6.5 -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
79
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
80 f1 xs = map (\x -> x + 1) xs
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
81
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
82 f2 xs = map (\x -> 2 * x) (map (\x -> x + 1) xs)
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
83
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
84 f3 xs = filter (\x -> x > 1) (map (\x -> x + 1) xs)
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
85
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
86 f4 f g x = f (g x)
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
87
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
88 f5 f g x y = f (g x y)
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
89
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
90 f6 f g x y z = f (g x y z)
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
91
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
92 f7 f g h x = g (h (f x))
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
93
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
94
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
95
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
96 {---------------------------------------------------------------------}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
97 {- Aufgabe H6.1 -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
98
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
99 wellformed :: PairList -> Bool
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
100 wellformed = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
101
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
102
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
103 empty :: PairList
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
104 empty = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
105
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
106
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
107 member :: Int -> PairList -> Bool
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
108 member = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
109
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
110
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
111 insert :: Int -> PairList -> PairList
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
112 insert = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
113
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
114
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
115 union :: PairList -> PairList -> PairList
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
116 union = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
117
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
118
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
119 delete :: Int -> PairList -> PairList
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
120 delete = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
121
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
122
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
123
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
124 {---------------------------------------------------------------------}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
125 {- Aufgabe H6.2 -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
126
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
127 {-WETT-}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
128 anonymize :: String -> String
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
129 anonymize = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
130 {-TTEW-}