{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE UndecidableInstances #-}
module Generic.Data.Function.FoldMap.NonSum where
import GHC.Generics
import Generic.Data.Function.FoldMap.Constructor
( GFoldMapC(gFoldMapC)
, GenericFoldMap(type GenericFoldMapM) )
import Generic.Data.Rep.Error
class GFoldMapNonSum tag f where gFoldMapNonSum :: f p -> GenericFoldMapM tag
instance GFoldMapC tag f => GFoldMapNonSum tag (C1 c f) where
gFoldMapNonSum :: forall (p :: k). C1 c f p -> GenericFoldMapM tag
gFoldMapNonSum (M1 f p
a) = forall (tag :: k) (f :: k -> Type) (p :: k).
GFoldMapC tag f =>
f p -> GenericFoldMapM tag
forall {k} {k1} (tag :: k) (f :: k1 -> Type) (p :: k1).
GFoldMapC tag f =>
f p -> GenericFoldMapM tag
gFoldMapC @tag f p
a
instance GFoldMapNonSum tag (l :+: r) where gFoldMapNonSum :: forall (p :: k). (:+:) l r p -> GenericFoldMapM tag
gFoldMapNonSum = [Char] -> (:+:) l r p -> GenericFoldMapM tag
forall a. HasCallStack => [Char] -> a
error [Char]
eNoSum
instance GFoldMapNonSum tag V1 where gFoldMapNonSum :: forall (p :: k). V1 p -> GenericFoldMapM tag
gFoldMapNonSum = [Char] -> V1 p -> GenericFoldMapM tag
forall a. HasCallStack => [Char] -> a
error [Char]
eNoEmpty