+++ /dev/null
-TEST OF DEFACTORISATION FOR FUNCTIONS THAT DROP
- POLYMORPHIC VARIABLES
-
-> module Test where
-> data Boolean = FF | TT
-> data Pair a b = MkPair a b
-> data LList alpha = Nill | Conss alpha (LList alpha)
-> data Nat = Zero | Succ Nat
-> data Tree x = Leaf x | Node (Tree x) (Tree x)
-> data A a = MkA a (A a)
->
-> append :: LList a -> LList a -> LList a
-> append xs ys = case xs of
-> Nill -> ys
-> Conss z zs -> Conss z (append zs ys)
-
-The following function drops @b@.
-
-> flat :: Tree (Pair a b) -> LList a
-> flat t = case t of
-> Leaf (MkPair a b) -> Conss a Nill
-> Node l r -> append (flat l) (flat r)
->
-> fl :: Boolean -> LList Boolean
-> fl x = flat (Leaf (MkPair TT Zero))
->
-