[project @ 1996-01-08 20:28:12 by partain]
[ghc-hetmet.git] / ghc / compiler / tests / stranal / unu.lhs
1 > data Boolean = FF | TT
2 > data Pair a b = Mkpair a b
3 > data LList alpha = Nill | Conss alpha (LList alpha) 
4 > data Nat = Zero | Succ Nat
5 > data Tree t = Leaf t | Node (Tree t) (Tree t) 
6 > data A a = MkA a (A a) 
7 > data Foo baz = MkFoo (Foo (Foo baz))
8 >{-
9 > append1 :: LList a -> LList a -> LList a
10 > append1 xs ys = append2 xs
11 >   where
12 >     append2 xs = case xs of
13 >                    Nill -> ys
14 >                    Conss x xs -> Conss x (append3 xs)
15 >     append3 xs = case xs of
16 >                    Nill -> ys
17 >                    Conss x xs -> Conss x (append2 xs)
18 >
19 > loop :: a -> a
20 > loop x =  loop x
21 >
22 > hd :: LList b -> b
23 > hd Nill         = loop
24 > hd (Conss y ys) = y
25 >
26 > hdb :: LList (LList b) -> LList b
27 > hdb = hd
28 >
29 > append :: [a] -> [a] -> [a]
30 > append [] ys     = ys
31 > append (x:xs) ys = x:(append xs ys)
32
33 > f :: [a] -> [a]
34 > f y = append x (f y)
35 >   where  x = append x (f y)
36 >-}
37 > app :: LList a -> LList a -> LList a
38 > app Nill Nill = Nill
39 > app  xs ys  = case xs of
40 >                 Nill -> ys 
41 >                 Conss z zs  -> Conss z (app zs ys) 
42 >{-
43 > app :: LList a -> LList a -> LList a
44 > app  xs ys = case xs of
45 >               Nill -> case ys of
46 >                        Nill -> Nill
47 >                        Conss u us -> ap 
48 >               Conss a as -> ap 
49 >  where ap = case xs of
50 >              Nill -> ys 
51 >              Conss z zs  -> Conss z (app zs ys) 
52 >
53 > app :: LList a -> LList a -> LList a
54 > app  xs ys = case xs of
55 >               Nill -> case ys of
56 >                        Nill -> Nill
57 >                        Conss u us -> ap xs ys
58 >               Conss a as -> ap xs ys
59 >
60 > ap xs ys = case xs of
61 >              Nill -> ys 
62 >              Conss z zs  -> Conss z (app zs ys) 
63 >
64 > ap :: LList a -> LList a -> LList a
65 > ap  xs ys  = case xs of
66 >                 Nill -> ys 
67 >                 Conss z zs  -> Conss z (ap zs ys) 
68 >
69 > app :: LList a -> LList a -> LList a
70 > app  xs ys = case xs of
71 >               Nill -> case ys of
72 >                        Nill -> Nill
73 >                        Conss u us -> ap xs ys
74 >               Conss a as -> ap xs ys
75 >-}