タイプに触発された、次の存在記号辞書に相当するタイプクラスは何ですかPipe
。
{-# LANGUAGE ExistentialQuantification, PolymorphicComponents #-}
data PipeD p = forall cat . PipeD {
isoI :: forall a b m r . Iso (->) (p a b m r) (cat m r a b),
categoryI :: forall m r . (Monad m) => CategoryI (cat m r) ,
monadI :: forall a b m . (Monad m) => MonadI (p a b m) ,
monadTransI :: forall a b . MonadTransI (p a b) }
私が目指している大まかなアイデアは、(PipeLike p)
制約が与えられた場合、推論(MonadTrans (p a b), Monad (p a b m)
して(擬似コードを使用して)できるということ(Category "\a b -> p a b m r")
です。
CategoryI
とは、、、、およびがこのタイプの(一種の)スーパークラスであるMonadI
という考えを表現するために使用するタイプクラスに相当する辞書です。Category
Monad
MonadTrans
PipeLike
Iso
タイプは、同型を格納する次の辞書です。
data Iso (~>) a b = Iso {
fw :: a ~> b ,
bw :: b ~> a }