{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DefaultSignatures #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE InstanceSigs #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE StandaloneKindSignatures #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -Wno-orphans #-}
module Control.Monad.Singletons (
PFunctor(Fmap), SFunctor(sFmap),
PMonad(..), SMonad(..), PMonadPlus(..), SMonadPlus(..),
PMonadFail(Fail), SMonadFail(sFail),
MapM, sMapM, MapM_, sMapM_, ForM, sForM,
Sequence, sSequence, Sequence_, sSequence_,
type (=<<), (%=<<), type (>=>), (%>=>), type (<=<), (%<=<),
Void, sVoid,
Join, sJoin,
Msum, sMsum,
Mfilter, sMfilter, FilterM, sFilterM,
MapAndUnzipM, sMapAndUnzipM, ZipWithM, sZipWithM,
ZipWithM_, sZipWithM_, FoldlM, sFoldlM,
ReplicateM, sReplicateM, ReplicateM_, sReplicateM_,
Guard, sGuard, When, sWhen, Unless, sUnless,
LiftM, sLiftM, LiftM2, sLiftM2, LiftM3, sLiftM3,
LiftM4, sLiftM4, LiftM5, sLiftM5, Ap, sAp,
type (<$!>), (%<$!>),
FmapSym0, FmapSym1, FmapSym2,
type (>>=@#@$), type (>>=@#@$$), type (>>=@#@$$$),
type (>>@#@$), type (>>@#@$$), type (>>@#@$$$),
ReturnSym0, ReturnSym1, FailSym0, FailSym1,
MzeroSym0, MplusSym0, MplusSym1, MplusSym2,
MapMSym0, MapMSym1, MapMSym2,
MapM_Sym0, MapM_Sym1, MapM_Sym2,
ForMSym0, ForMSym1, ForMSym2,
SequenceSym0, SequenceSym1,
Sequence_Sym0, Sequence_Sym1,
type (=<<@#@$), type (=<<@#@$$), type (=<<@#@$$$),
type (>=>@#@$), type (>=>@#@$$), type (>=>@#@$$$),
type (<=<@#@$), type (<=<@#@$$), type (<=<@#@$$$),
VoidSym0, VoidSym1,
JoinSym0, JoinSym1,
MsumSym0, MsumSym1,
MfilterSym0, MfilterSym1, MfilterSym2,
FilterMSym0, FilterMSym1, FilterMSym2,
MapAndUnzipMSym0, MapAndUnzipMSym1, MapAndUnzipMSym2,
ZipWithMSym0, ZipWithMSym1, ZipWithMSym2, ZipWithMSym3,
ZipWithM_Sym0, ZipWithM_Sym1, ZipWithM_Sym2, ZipWithM_Sym3,
FoldlMSym0, FoldlMSym1, FoldlMSym2, FoldlMSym3,
ReplicateMSym0, ReplicateMSym1, ReplicateMSym2,
ReplicateM_Sym0, ReplicateM_Sym1, ReplicateM_Sym2,
GuardSym0, GuardSym1,
WhenSym0, WhenSym1, WhenSym2,
UnlessSym0, UnlessSym1, UnlessSym2,
LiftMSym0, LiftMSym1, LiftMSym2,
LiftM2Sym0, LiftM2Sym1, LiftM2Sym2, LiftM2Sym3,
LiftM3Sym0, LiftM3Sym1, LiftM3Sym2, LiftM3Sym3, LiftM3Sym4,
LiftM4Sym0, LiftM4Sym1, LiftM4Sym2, LiftM4Sym3, LiftM4Sym4, LiftM4Sym5,
LiftM5Sym0, LiftM5Sym1, LiftM5Sym2, LiftM5Sym3, LiftM5Sym4, LiftM5Sym5, LiftM5Sym6,
ApSym0, ApSym1, ApSym2,
type (<$!>@#@$), type (<$!>@#@$$), type (<$!>@#@$$$),
) where
import Control.Applicative
import Control.Applicative.Singletons ()
import Control.Monad
import Control.Monad.Fail.Singletons
import Control.Monad.Singletons.Internal
import Data.Foldable.Singletons
import Data.Functor.Singletons
import Data.List.Singletons (UnzipSym0, sUnzip, ZipWithSym0, sZipWith)
import Data.Monoid.Singletons
import Data.Ord (Down(..))
import Data.Ord.Singletons
import Data.Singletons.Base.Instances
import Data.Singletons.TH hiding (Void)
import Data.Traversable.Singletons
import GHC.Base.Singletons hiding (Foldr, FoldrSym0, sFoldr)
import GHC.Num.Singletons
import GHC.TypeNats
$