doc-src/Codegen/Thy/examples/Example.hs
changeset 39210 985b13c5a61d
parent 39068 5ac590e8b320
child 41185 d5f0e556ffd3
equal deleted inserted replaced
39209:1ca9055ba1f7 39210:985b13c5a61d
     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 }