{-# LANGUAGE TemplateHaskell #-}
module Data.Comp.Multi.Derive
(
derive,
module Data.Comp.Multi.Derive.Show,
module Data.Comp.Multi.Derive.ConstrName,
module Data.Comp.Multi.Derive.Equality,
module Data.Comp.Multi.Derive.Ordering,
module Data.Comp.Multi.Derive.HFunctor,
module Data.Comp.Multi.Derive.HFoldable,
module Data.Comp.Multi.Derive.HTraversable,
module Data.Comp.Multi.Derive.SmartConstructors,
liftSum,
module Data.Comp.Multi.Derive.Generic
) where
import Data.Comp.Derive.Utils (derive, liftSumGen)
import Data.Comp.Dict (All)
import Data.Comp.Multi.Derive.ConstrName
import Data.Comp.Multi.Derive.Equality
import Data.Comp.Multi.Derive.Generic
import Data.Comp.Multi.Derive.HFoldable
import Data.Comp.Multi.Derive.HFunctor
import Data.Comp.Multi.Derive.HTraversable
import Data.Comp.Multi.Derive.Ordering
import Data.Comp.Multi.Derive.Show
import Data.Comp.Multi.Derive.SmartConstructors
import Data.Comp.Multi.Ops (Sum, caseCxt)
import Language.Haskell.TH
liftSum :: Name -> Q [Dec]
liftSum :: Name -> Q [Dec]
liftSum = Name -> Name -> Name -> Name -> Q [Dec]
liftSumGen 'caseCxt ''Sum ''All