{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DefaultSignatures #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE InstanceSigs #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE StandaloneKindSignatures #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -Wno-orphans #-}
module Data.Singletons.Prelude.Semigroup (
PSemigroup(..), SSemigroup(..),
Sing, SMin(..), SMax(..), SFirst(..), SLast(..),
SWrappedMonoid(..), SDual(..), SAll(..), SAny(..),
SSum(..), SProduct(..), SOption(..), SArg(..),
GetMin, GetMax, GetFirst, GetLast, UnwrapMonoid, GetDual,
GetAll, GetAny, GetSum, GetProduct, GetOption,
sGetMin, sGetMax, sGetFirst, sGetLast, sUnwrapMonoid, sGetDual,
sGetAll, sGetAny, sGetSum, sGetProduct, sGetOption,
option_, sOption_, Option_,
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,
OptionSym0, OptionSym1, GetOptionSym0, GetOptionSym1,
ArgSym0, ArgSym1, ArgSym2
) where
import Control.Applicative
import Control.Monad
import qualified Data.Semigroup as Semi (Min(..), Max(..))
import Data.Semigroup (First(..), Last(..), WrappedMonoid(..), Option(..), Arg(..))
import Data.Singletons.Prelude.Base hiding
(Foldr, FoldrSym0, FoldrSym1, FoldrSym2, FoldrSym3, sFoldr)
import Data.Singletons.Prelude.Enum
import Data.Singletons.Prelude.Eq
import Data.Singletons.Prelude.Foldable hiding
( All, AllSym0, AllSym1
, Any, AnySym0, AnySym1
, Product, ProductSym0, ProductSym1
, Sum, SumSym0, SumSym1 )
import Data.Singletons.Prelude.Functor
import Data.Singletons.Prelude.Instances
import Data.Singletons.Prelude.Maybe
import Data.Singletons.Prelude.Monad.Internal
import Data.Singletons.Prelude.Monoid hiding
(SFirst(..), SLast(..),
FirstSym0, FirstSym1, LastSym0, LastSym1,
GetFirst, sGetFirst, GetFirstSym0, GetFirstSym1,
GetLast, sGetLast, GetLastSym0, GetLastSym1)
import Data.Singletons.Prelude.Num
import Data.Singletons.Prelude.Ord hiding
(MinSym0, MinSym1, MaxSym0, MaxSym1)
import Data.Singletons.Prelude.Ord.Disambiguation
import Data.Singletons.Prelude.Semigroup.Internal
import Data.Singletons.Prelude.Show
import Data.Singletons.Prelude.Traversable
import Data.Singletons.Single
import Data.Singletons.Util
$(genSingletons [''Arg])
$(showSingInstances $ ''Option : semigroupBasicTypes)
$(