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 -}