doc-src/IsarAdvanced/Codegen/Thy/examples/Example.hs
changeset 30209 2f4684e2ea95
parent 30202 2775062fd3a9
child 30210 853abb4853cc
     1.1 --- a/doc-src/IsarAdvanced/Codegen/Thy/examples/Example.hs	Mon Mar 02 16:58:39 2009 +0100
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,33 +0,0 @@
     1.4 -{-# OPTIONS_GHC -fglasgow-exts #-}
     1.5 -
     1.6 -module Example where {
     1.7 -
     1.8 -
     1.9 -foldla :: forall a b. (a -> b -> a) -> a -> [b] -> a;
    1.10 -foldla f a [] = a;
    1.11 -foldla f a (x : xs) = foldla f (f a x) xs;
    1.12 -
    1.13 -rev :: forall a. [a] -> [a];
    1.14 -rev xs = foldla (\ xsa x -> x : xsa) [] xs;
    1.15 -
    1.16 -list_case :: forall t a. t -> (a -> [a] -> t) -> [a] -> t;
    1.17 -list_case f1 f2 (a : list) = f2 a list;
    1.18 -list_case f1 f2 [] = f1;
    1.19 -
    1.20 -data Queue a = AQueue [a] [a];
    1.21 -
    1.22 -empty :: forall a. Queue a;
    1.23 -empty = AQueue [] [];
    1.24 -
    1.25 -dequeue :: forall a. Queue a -> (Maybe a, Queue a);
    1.26 -dequeue (AQueue [] []) = (Nothing, AQueue [] []);
    1.27 -dequeue (AQueue xs (y : ys)) = (Just y, AQueue xs ys);
    1.28 -dequeue (AQueue (v : va) []) =
    1.29 -  let {
    1.30 -    (y : ys) = rev (v : va);
    1.31 -  } in (Just y, AQueue [] ys);
    1.32 -
    1.33 -enqueue :: forall a. a -> Queue a -> Queue a;
    1.34 -enqueue x (AQueue xs ys) = AQueue (x : xs) ys;
    1.35 -
    1.36 -}