effects-0.1: src/Control/Effects/Set.hs
{-# LANGUAGE MultiParamTypeClasses, TypeFamilies, FlexibleContexts #-}
module Control.Effects.Set where
import Control.Effects
import qualified Data.Set as Set
choose :: (c ~ ContT (Set.Set r) m, AutoLift c n, Monad m, Ord r)
=> Proxy c -> [a] -> n a
choose p as = operation p $ \k -> do
sets <- mapM k as
return $ Set.unions sets
set :: (Monad m, Ord a) => Handler (Set.Set a) (Set.Set a) m a
set = Handler
{ ret = return . Set.singleton
, fin = return
}