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)
8 data Foo baz = MkFoo (Foo (Foo baz))
10 append1 :: LList a -> LList a -> LList a
11 append1 xs ys = append2 xs
13 append2 xs = case xs of
15 Conss x xs -> Conss x (append3 xs)
16 append3 xs = case xs of
18 Conss x xs -> Conss x (append2 xs)
27 hdb :: LList (LList b) -> LList b
30 append :: [a] -> [a] -> [a]
32 append (x:xs) ys = x:(append xs ys)
36 where x = append x (f y)
38 app :: LList a -> LList a -> LList a
40 app xs ys = case xs of
42 Conss z zs -> Conss z (app zs ys)
44 app :: LList a -> LList a -> LList a
45 app xs ys = case xs of
52 Conss z zs -> Conss z (app zs ys)
54 app :: LList a -> LList a -> LList a
55 app xs ys = case xs of
58 Conss u us -> ap xs ys
59 Conss a as -> ap xs ys
63 Conss z zs -> Conss z (app zs ys)
65 ap :: LList a -> LList a -> LList a
68 Conss z zs -> Conss z (ap zs ys)
70 app :: LList a -> LList a -> LList a
71 app xs ys = case xs of
74 Conss u us -> ap xs ys
75 Conss a as -> ap xs ys