{-# LANGUAGE DataKinds #-}
{-# LANGUAGE NoNamedWildCards #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -Wno-orphans #-}
module Data.Semigroup.Singletons (
PSemigroup(..), SSemigroup(..),
Sing, SMin(..), SMax(..), SFirst(..), SLast(..),
SWrappedMonoid(..), SDual(..), SAll(..), SAny(..),
SSum(..), SProduct(..), SArg(..),
GetMin, GetMax, GetFirst, GetLast, UnwrapMonoid, GetDual,
GetAll, GetAny, GetSum, GetProduct,
sGetMin, sGetMax, sGetFirst, sGetLast, sUnwrapMonoid, sGetDual,
sGetAll, sGetAny, sGetSum, sGetProduct,
type (<>@#@$), type (<>@#@$$), type (<>@#@$$$),
SconcatSym0, SconcatSym1,
MinSym0, MinSym1, GetMinSym0, GetMinSym1,
MaxSym0, MaxSym1, GetMaxSym0, GetMaxSym1,
FirstSym0, FirstSym1, GetFirstSym0, GetFirstSym1,
LastSym0, LastSym1, GetLastSym0, GetLastSym1,
WrapMonoidSym0, WrapMonoidSym1, UnwrapMonoidSym0, UnwrapMonoidSym1,
DualSym0, DualSym1, GetDualSym0, GetDualSym1,
AllSym0, AllSym1, GetAllSym0, GetAllSym1,
AnySym0, AnySym1, GetAnySym0, GetAnySym1,
SumSym0, SumSym1, GetSumSym0, GetSumSym1,
ProductSym0, ProductSym1, GetProductSym0, GetProductSym1,
ArgSym0, ArgSym1, ArgSym2
) where
import Control.Monad.Singletons.Internal
import Data.Eq.Singletons
import Data.Foldable.Singletons hiding
( All, AllSym0, AllSym1
, Any, AnySym0, AnySym1
, Product, ProductSym0, ProductSym1
, Sum, SumSym0, SumSym1 )
import Data.Monoid.Singletons hiding
(SFirst(..), SLast(..),
FirstSym0, FirstSym1, LastSym0, LastSym1,
GetFirst, sGetFirst, GetFirstSym0, GetFirstSym1,
GetLast, sGetLast, GetLastSym0, GetLastSym1)
import Data.Ord.Singletons hiding
(MinSym0, MinSym1, MaxSym0, MaxSym1)
import Data.Ord.Singletons.Disambiguation
import qualified Data.Semigroup as Semi (Min(..), Max(..))
import Data.Semigroup (First(..), Last(..), WrappedMonoid(..), Arg(..))
import Data.Semigroup.Singletons.Internal.Classes
import Data.Semigroup.Singletons.Internal.Wrappers
import Data.Singletons.Base.Enum
import Data.Singletons.Base.Instances
import Data.Singletons.Base.Util
import Data.Singletons.TH
import Data.Traversable.Singletons
import GHC.Base.Singletons hiding
(Foldr, FoldrSym0, FoldrSym1, FoldrSym2, FoldrSym3, sFoldr)
import GHC.Num.Singletons
import Text.Show.Singletons
$(genSingletons [''Arg])
$(showSingInstances semigroupBasicTypes)
$