container-0.3.2: src/Data/Set/Mutable/Class.hs
module Data.Set.Mutable.Class
(module Data.Set.Mutable.Class, module X) where
import Prelude
import Data.Item as X
class Monad m => Set m s where
new :: m s
singleton :: Item s -> m s
insert :: s -> Item s -> m ()
insertMany :: s -> [Item s] -> m ()
delete :: s -> Item s -> m ()
member :: s -> Item s -> m Bool
size :: s -> m Int
null :: s -> m Bool
toList :: s -> m [Item s]
fromList :: [Item s] -> m s
singleton el = do
s <- new
insert s el
pure s
{-# INLINE singleton #-}
insertMany s es = mapM_ (insert s) es ; {-# INLINE insertMany #-}
null = fmap (== 0) . size ; {-# INLINE null #-}
fromList es = do
s <- new
insertMany s es
pure s
{-# INLINE fromList #-}