spectacle-1.0.0: src/Language/Spectacle/Syntax/NonDet/Internal.hs
{-# LANGUAGE TypeFamilies #-}
module Language.Spectacle.Syntax.NonDet.Internal
( NonDet (Empty, Choose),
Effect (MSplit),
)
where
import Language.Spectacle.Lang.Member (Member)
import Language.Spectacle.Lang.Scoped (Effect)
-- ---------------------------------------------------------------------------------------------------------------------
data NonDet a where
Empty :: NonDet a
Choose :: NonDet Bool
data instance Effect NonDet m a where
MSplit :: (m ~ f ctx effs, Member NonDet effs) => m a -> Effect NonDet m (Maybe (m a, m a))