{-# LANGUAGE UndecidableInstances, EmptyDataDecls #-}
module Data.Generics.SYB.WithClass.Context
where
class Sat a
where
dict :: a
data NoCtx a
noCtx :: NoCtx ()
noCtx :: NoCtx ()
noCtx = NoCtx ()
forall a. HasCallStack => a
undefined
instance Sat (NoCtx a) where dict :: NoCtx a
dict = NoCtx a
forall a. HasCallStack => a
undefined
data PairCtx l r a
= PairCtx { PairCtx l r a -> l a
leftCtx :: l a
, PairCtx l r a -> r a
rightCtx :: r a }
pairCtx :: l () -> r () -> PairCtx l r ()
pairCtx :: l () -> r () -> PairCtx l r ()
pairCtx l ()
_ r ()
_ = PairCtx l r ()
forall a. HasCallStack => a
undefined
instance (Sat (l a), Sat (r a))
=> Sat (PairCtx l r a)
where
dict :: PairCtx l r a
dict = PairCtx :: forall (l :: * -> *) (r :: * -> *) a. l a -> r a -> PairCtx l r a
PairCtx { leftCtx :: l a
leftCtx = l a
forall a. Sat a => a
dict
, rightCtx :: r a
rightCtx = r a
forall a. Sat a => a
dict }