# defining (-> Bool) as a set

**Pixel
**
pixel@mandrakesoft.com

*23 Apr 2002 01:36:25 +0200*

Hal Daume III <hdaume@ISI.EDU> writes:
>* I'd like to be able to define something like
*>*
*>* instance Eq a => Coll (-> Bool) a where
*>* empty = \_ -> False
*>* single x = \y -> if x == y then True else False
*>* union a b = \x -> a x || b x
*>* insert s x = \y -> x == y || s y
*
I don't know what Coll is, but the following is working:
class Collection e ce | ce -> e where
empty :: ce
insert :: e -> ce -> ce
member :: e -> ce -> Bool
instance Eq a => Collection a (a -> Bool) where
empty = (\x -> False)
insert e f = (\x -> if x == e then True else f x)
member e f = f e