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