annotate exercises/src/Exercise_5.hs @ 13:8cc37c82619c

week 5 tutorial
author Markus Kaiser <markus.kaiser@in.tum.de>
date Wed, 21 Nov 2012 19:28:26 +0100
parents 8496af3b866b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
1 module Exercise_5 where
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
2 import Data.Maybe
13
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
3 import Data.List
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
4 import Test.QuickCheck
11
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
5
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
6 {- Library DO NOT CHANGE -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
7 type State = Integer
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
8 type DA = (State, State -> Char -> State, State -> Bool)
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
9 type ListDA = (State, [((State, Char), State)], [State])
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
10
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
11 a :: DA
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
12 a = (0, delta, (==1))
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
13 where
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
14 delta 0 'a' = 1
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
15 delta 1 'a' = 1
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
16 delta 2 'a' = 1
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
17 delta 0 'b' = 2
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
18 delta 1 'b' = 2
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
19 delta 2 'b' = 2
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
20
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
21 toDA :: ListDA -> DA
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
22 toDA (start, delta, final) = (start, deltaFun delta, (`elem` final))
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
23 where deltaFun dl = curry (fromMaybe 0 . flip lookup dl)
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
24 {- End Library -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
25
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
26
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
27 {---------------------------------------------------------------------}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
28 {- Aufgabe G5.1 -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
29
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
30 iter :: Int -> (a -> a) -> a -> a
13
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
31 iter n f x
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
32 | n <= 0 = x
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
33 | otherwise = iter (n - 1) f (f x)
11
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
34
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
35
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
36 pow :: Int -> Int -> Int
13
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
37 pow n k = iter k (\x -> x*n) 1
11
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 drop' :: Int -> [a] -> [a]
13
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
41 drop' n xs = iter n tail xs
11
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 replicate' :: Int -> a -> [a]
13
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
45 replicate' n x = iter n (x:) []
11
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
46
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
47
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
48
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
49 {---------------------------------------------------------------------}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
50 {- Aufgabe G5.2 -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
51
13
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
52 {- Fold-Beispiel anhand der Summenfunktion -}
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
53
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
54 sum' :: [Integer] -> Integer
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
55 sum' [] = 0
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
56 sum' (x:xs) = x + sum' xs
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
57
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
58
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
59 sum'' :: [Integer] -> Integer
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
60 sum'' xs = sum_acc xs 0
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
61 where
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
62 sum_acc :: [Integer] -> Integer -> Integer
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
63 sum_acc [] acc = acc
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
64 sum_acc (x:xs) acc = sum_acc xs (x+acc)
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
65
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
66 sum_fold :: [Integer] -> Integer
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
67 --sum_fold xs = foldr (\x acc -> x + acc) 0 xs
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
68 sum_fold xs = foldr (+) 0 xs
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
69
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
70 {-----}
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
71
11
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
72 partition_rec :: (a -> Bool) -> [a] -> ([a], [a])
13
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
73 partition_rec p xs = partition_rec' xs ([], [])
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
74 where
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
75 partition_rec' [] (ts, fs) = (reverse ts, reverse fs)
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
76 partition_rec' (x:xs) (ts, fs) =
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
77 if p x then partition_rec' xs (x:ts, fs)
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
78 else partition_rec' xs (ts, x:fs)
11
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
79
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
80
12
8496af3b866b add G5.3 and G5.4 definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 11
diff changeset
81 partition_foldr :: (a -> Bool) -> [a] -> ([a], [a])
13
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
82 partition_foldr p xs = foldr partition_foldr' ([], []) xs
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
83 where
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
84 partition_foldr' x (ts, fs) =
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
85 if p x then (x:ts, fs)
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
86 else (ts, x:fs)
11
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
87
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
88
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
89 partition_filter :: (a -> Bool) -> [a] -> ([a], [a])
13
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
90 --partition_filter p xs = (filter p xs, filter (\x -> not(p(x))) xs)
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
91 partition_filter p xs = (filter p xs, filter (not . p) xs)
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
92
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
93
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
94 prop_partition_foldr_even xs =
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
95 partition_foldr even xs == partition even xs
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
96
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
97
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
98 prop_partition_distrib_even xs ys =
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
99 partition even (xs ++ ys) == (ts ++ ts', fs ++ fs')
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
100 where
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
101 (ts, fs) = partition even xs
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
102 (ts', fs') = partition even ys
11
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
103
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
104
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
105 zipWith' :: (a -> b -> c) -> [a] -> [b] -> [c]
13
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
106 zipWith' _ [] [] = []
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
107 zipWith' f (x:xs) (y:ys) = (f x y) : zipWith' f xs ys
11
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
108
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 {---------------------------------------------------------------------}
12
8496af3b866b add G5.3 and G5.4 definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 11
diff changeset
112 {- Aufgabe G5.3 -}
8496af3b866b add G5.3 and G5.4 definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 11
diff changeset
113
13
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
114 -- Beide Identitäten
12
8496af3b866b add G5.3 and G5.4 definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 11
diff changeset
115 lambda_1 = (\xs -> foldr (++) [] (map (\x -> [x]) xs))
8496af3b866b add G5.3 and G5.4 definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 11
diff changeset
116 lambda_2 = (\gg xx yy -> head (tail (zipWith gg [ xx , xx ] [ yy , yy ])))
8496af3b866b add G5.3 and G5.4 definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 11
diff changeset
117
8496af3b866b add G5.3 and G5.4 definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 11
diff changeset
118
8496af3b866b add G5.3 and G5.4 definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 11
diff changeset
119
8496af3b866b add G5.3 and G5.4 definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 11
diff changeset
120 {---------------------------------------------------------------------}
8496af3b866b add G5.3 and G5.4 definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 11
diff changeset
121 {- Aufgabe G5.4 -}
8496af3b866b add G5.3 and G5.4 definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 11
diff changeset
122
13
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
123 -- Unendliche Liste mit Nullen
12
8496af3b866b add G5.3 and G5.4 definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 11
diff changeset
124 zeros :: [Int]
8496af3b866b add G5.3 and G5.4 definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 11
diff changeset
125 zeros = 0 : zeros
8496af3b866b add G5.3 and G5.4 definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 11
diff changeset
126
8496af3b866b add G5.3 and G5.4 definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 11
diff changeset
127
8496af3b866b add G5.3 and G5.4 definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 11
diff changeset
128 length' :: [a] -> Int
8496af3b866b add G5.3 and G5.4 definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 11
diff changeset
129 length' [] = 0
8496af3b866b add G5.3 and G5.4 definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 11
diff changeset
130 length' (_:xs) = 1 + length' xs
8496af3b866b add G5.3 and G5.4 definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 11
diff changeset
131
8496af3b866b add G5.3 and G5.4 definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 11
diff changeset
132
13
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
133 -- Terminiert immer.
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
134 -- m <= n: 0
8cc37c82619c week 5 tutorial
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 12
diff changeset
135 -- m > n: 1
12
8496af3b866b add G5.3 and G5.4 definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 11
diff changeset
136 h :: Integer -> Integer -> Integer
8496af3b866b add G5.3 and G5.4 definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 11
diff changeset
137 h m n
8496af3b866b add G5.3 and G5.4 definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 11
diff changeset
138 | m == n = 0
8496af3b866b add G5.3 and G5.4 definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 11
diff changeset
139 | m < n = h m (n - 1)
8496af3b866b add G5.3 and G5.4 definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 11
diff changeset
140 | m >= n = h n m + 1
8496af3b866b add G5.3 and G5.4 definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 11
diff changeset
141
8496af3b866b add G5.3 and G5.4 definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 11
diff changeset
142
8496af3b866b add G5.3 and G5.4 definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 11
diff changeset
143
8496af3b866b add G5.3 and G5.4 definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents: 11
diff changeset
144 {---------------------------------------------------------------------}
11
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
145 {- Aufgabe H5.1 -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
146
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
147 fixpoint :: (a -> a -> Bool) -> (a -> a) -> a -> a
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
148 fixpoint = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
149
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
150
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
151 cents :: [Integer] -> [Integer]
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
152 cents = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
153
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
154
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
155 trancl :: [(Integer, Integer)] -> [(Integer, Integer)]
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
156 trancl = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
157
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
158
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
159
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
160 {---------------------------------------------------------------------}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
161 {- Aufgabe H5.2 -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
162
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
163 advance :: DA -> State -> String -> State
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
164 advance = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
165
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
166
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
167 prop_advance_empty :: ListDA -> State -> Bool
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
168 prop_advance_empty = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
169
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
170
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
171 prop_advance_single :: ListDA -> State -> Char -> Bool
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
172 prop_advance_single = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
173
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
174
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
175 prop_advance_concat :: ListDA -> State -> String -> String -> Bool
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
176 prop_advance_concat = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
177
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
178
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
179 accept :: DA -> String -> Bool
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
180 accept = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
181
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
182
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
183 reachableStates :: DA -> State -> [Char] -> [State]
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
184 reachableStates = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
185
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
186
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
187
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
188 {---------------------------------------------------------------------}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
189 {- Aufgabe H5.3 -}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
190
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
191 {-WETT-}
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
192 quasiSubseq :: Eq a => [a] -> [a] -> Bool
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
193 quasiSubseq xs ys = undefined
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
194 {-TTEW-}