5 instance Functor Set.T where
8 instance FunctorE Set.T where
10 result = MSet.create ()
11 Set.iter (\x -> MSet.add result $ f x) set
17 instance Monad Set.T where
18 return = Set.singleton
22 importJava "java.util.Set" where
24 addAll' :: MSet.T a -> Set.T a -> <Proc> Boolean
26 instance MonadE Set.T where
27 set `bindE` f = runProc do
28 result = MSet.create ()
29 Set.iter (\x -> addAll' result $ f x) set
32 instance MonadZero Set.T where
35 instance MonadZeroE Set.T where
36 filter p set = runProc do
37 result = MSet.create ()
40 then ignore $ MSet.add result x
45 instance (Show a) => Show (Set.T a) where
48 Set.iterI (\i x -> (if i > 0 then sb << ", " else sb) <+ x) set
51 instance Additive (Set.T a) where
54 result = MSet.create ()
55 Set.iter (MSet.add result) a
56 Set.iter (MSet.add result) b
59 result = MSet.create ()
60 iter (Set.iter (MSet.add result)) sets