equal
deleted
inserted
replaced
2 |
2 |
3 module Example where { |
3 module Example where { |
4 |
4 |
5 data Queue a = AQueue [a] [a]; |
5 data Queue a = AQueue [a] [a]; |
6 |
6 |
7 empty :: forall a. Example.Queue a; |
7 empty :: forall a. Queue a; |
8 empty = Example.AQueue [] []; |
8 empty = AQueue [] []; |
9 |
9 |
10 dequeue :: forall a. Example.Queue a -> (Maybe a, Example.Queue a); |
10 dequeue :: forall a. Queue a -> (Maybe a, Queue a); |
11 dequeue (Example.AQueue [] []) = (Nothing, Example.AQueue [] []); |
11 dequeue (AQueue [] []) = (Nothing, AQueue [] []); |
12 dequeue (Example.AQueue xs (y : ys)) = (Just y, Example.AQueue xs ys); |
12 dequeue (AQueue xs (y : ys)) = (Just y, AQueue xs ys); |
13 dequeue (Example.AQueue (v : va) []) = |
13 dequeue (AQueue (v : va) []) = |
14 let { |
14 let { |
15 (y : ys) = reverse (v : va); |
15 (y : ys) = reverse (v : va); |
16 } in (Just y, Example.AQueue [] ys); |
16 } in (Just y, AQueue [] ys); |
17 |
17 |
18 enqueue :: forall a. a -> Example.Queue a -> Example.Queue a; |
18 enqueue :: forall a. a -> Queue a -> Queue a; |
19 enqueue x (Example.AQueue xs ys) = Example.AQueue (x : xs) ys; |
19 enqueue x (AQueue xs ys) = AQueue (x : xs) ys; |
20 |
20 |
21 } |
21 } |