subhask-0.1.1.0: Type safe interface for programming in subcategories of Hask

Safe HaskellNone
LanguageHaskell2010

SubHask.Category.Trans.Monotonic

Synopsis

Documentation

data IncreasingT cat a b where Source

Constructors

IncreasingT :: (Ord_ a, Ord_ b) => cat a b -> IncreasingT cat a b 

type family Increasing_ a Source

Equations

Increasing_ ((cat :: * -> * -> *) a b) = IncreasingT cat a b 

unsafeProveIncreasing :: (Ord_ a, Ord_ b) => (a -> b) -> Increasing (a -> b) Source

type Mon = MonT Hask Source

A convenient specialization of MonT and Hask

type ValidMon a = Ord a Source

data MonT cat a b where Source

Constructors

MonT :: (ValidMon a, ValidMon b) => cat a b -> MonT cat a b 

Instances

Monad Mon LexSet Source

FIXME: is there a more efficient implementation?

Functor * Mon LexSet Source 
Category * cat => Category * (MonT cat) Source 
Sup (* -> * -> *) b a c => Sup (* -> * -> *) a (MonT b) c Source 
(<:) (* -> * -> *) subcat cat => (<:) (* -> * -> *) (MonT subcat) cat Source 
Sup (* -> * -> *) a b c => Sup (* -> * -> *) (MonT a) b c Source 
type ValidCategory * (MonT cat) a = (ValidCategory * cat a, ValidMon a) Source 

unsafeProveMonT :: (ValidMon a, ValidMon b) => cat a b -> MonT cat a b Source

unsafeProveMon :: (ValidMon a, ValidMon b) => cat a b -> MonT cat a b Source