1 {-# OPTIONS_GHC -Wall -fno-warn-orphans #-}
9 -- glCons - a naive way to add an employee to a guest list
10 glCons :: Employee -> GuestList -> GuestList
11 glCons e@(Emp {empFun = funval}) (GL els fun) = GL (e:els) (fun + funval)
13 -- Monoid instance for GuestList
14 instance Monoid GuestList where
16 (GL el1 f1) `mappend` (GL el2 f2) = GL (el1 ++ el2) (f1 + f2)
19 moreFun :: GuestList -> GuestList -> GuestList
20 moreFun g1@(GL _ f1) g2@(GL _ f2) | f1 > f2 = g1
23 -- treeFold :: (Tree a -> b -> b) -> b -> Tree a -> b
24 -- treeFold combine e= treeDestructor e f
25 -- where f _ ts = let vs = map (\t1 -> treeFold combine e t1) ts in
26 -- foldr (\acc v -> combine v acc) e vs
27 -- treeDestructor _ f1 t1 = case t1 of
28 -- (Node v xs) -> f1 v xs
31 -- treeFold :: (t1 -> [b] -> b) -> Tree t1 -> b
32 -- treeFold combine = treeDestructor f
33 -- where f v ts = let vs = map (\t -> treeFold combine t) ts in
35 -- treeDestructor f1 t1 = case t1 of
36 -- (Node v xs) -> f1 v xs
37 treeFold :: (b -> a -> b) -> b -> Tree a -> b
38 treeFold f e (Node v []) = f e v
39 treeFold f e (Node v ts) = let b = foldr (\t acc -> treeFold f acc t) e ts