graphted-0.3.0.0: Graph indexed monads.

Copyright(c) Aaron Friel
LicenseBSD-3
MaintainerAaron Friel <mayreply@aaronfriel.com>
Stabilityunstable
Portabilityportable
Safe HaskellSafe
LanguageHaskell2010

Data.GWrapped

Description

 

Synopsis

Documentation

newtype GWrapped m p a Source #

Wrap a non-indexed type constructor:

Constructors

GWrapped 

Fields

Instances

Functor f => GFunctor * (GWrapped f) Source # 

Associated Types

type Fmap (GWrapped f) (f :: GWrapped f -> * -> *) (i :: GWrapped f) :: p Source #

type Replace (GWrapped f) (f :: GWrapped f -> * -> *) (i :: GWrapped f) :: p Source #

Methods

gmap :: (a -> b) -> f i a -> f (Fmap (GWrapped f) f i) b Source #

greplace :: a -> f i b -> f (Replace (GWrapped f) f i) a Source #

Graphted * (GWrapped m) Source # 

Associated Types

type Unit (GWrapped m) (f :: GWrapped m -> * -> *) :: p Source #

type Inv (GWrapped m) (f :: GWrapped m -> * -> *) (i :: GWrapped m) (j :: GWrapped m) :: Constraint Source #

type Combine (GWrapped m) (f :: GWrapped m -> * -> *) (i :: GWrapped m) (j :: GWrapped m) :: p Source #

Applicative f => GPointed * (GWrapped f) Source # 

Associated Types

type Pure (GWrapped f) (f :: GWrapped f -> * -> *) :: p Source #

type PureCxt (GWrapped f) (f :: GWrapped f -> * -> *) (i :: GWrapped f) :: Constraint Source #

Methods

gpure :: a -> f (Pure (GWrapped f) f) a Source #

gpure' :: PureCxt (GWrapped f) f t => a -> f t a Source #

Applicative f => GApplicative * (GWrapped f) Source # 

Associated Types

type Apply (GWrapped f) (f :: GWrapped f -> * -> *) (i :: GWrapped f) (j :: GWrapped f) :: p Source #

type ApplyInv (GWrapped f) (f :: GWrapped f -> * -> *) (i :: GWrapped f) (j :: GWrapped f) :: Constraint Source #

type LiftA2 (GWrapped f) (f :: GWrapped f -> * -> *) (i :: GWrapped f) (j :: GWrapped f) :: p Source #

type LiftA2Inv (GWrapped f) (f :: GWrapped f -> * -> *) (i :: GWrapped f) (j :: GWrapped f) :: Constraint Source #

type Then (GWrapped f) (f :: GWrapped f -> * -> *) (i :: GWrapped f) (j :: GWrapped f) :: p Source #

type ThenInv (GWrapped f) (f :: GWrapped f -> * -> *) (i :: GWrapped f) (j :: GWrapped f) :: Constraint Source #

type But (GWrapped f) (f :: GWrapped f -> * -> *) (i :: GWrapped f) (j :: GWrapped f) :: p Source #

type ButInv (GWrapped f) (f :: GWrapped f -> * -> *) (i :: GWrapped f) (j :: GWrapped f) :: Constraint Source #

Methods

gap :: ApplyInv (GWrapped f) f i j => f i (a -> b) -> f j a -> f (Apply (GWrapped f) f i j) b Source #

gliftA2 :: LiftA2Inv (GWrapped f) f i j => (a -> b -> c) -> f i a -> f j b -> f (LiftA2 (GWrapped f) f i j) c Source #

gthen :: ThenInv (GWrapped f) f i j => f i a -> f j b -> f (Then (GWrapped f) f i j) b Source #

gbut :: ButInv (GWrapped f) f i j => f i a -> f j b -> f (But (GWrapped f) f i j) a Source #

Monad m => GMonad * (GWrapped m) Source # 

Associated Types

type Bind (GWrapped m) (m :: GWrapped m -> * -> *) (i :: GWrapped m) (j :: GWrapped m) :: p Source #

type BindInv (GWrapped m) (m :: GWrapped m -> * -> *) (i :: GWrapped m) (j :: GWrapped m) :: Constraint Source #

type Join (GWrapped m) (m :: GWrapped m -> * -> *) (i :: GWrapped m) (j :: GWrapped m) :: p Source #

type JoinInv (GWrapped m) (m :: GWrapped m -> * -> *) (i :: GWrapped m) (j :: GWrapped m) :: Constraint Source #

Methods

gbind :: BindInv (GWrapped m) m i j => m i a -> (a -> m j b) -> m (Bind (GWrapped m) m i j) b Source #

gjoin :: JoinInv (GWrapped m) m i j => m i (m j b) -> m (Join (GWrapped m) m i j) b Source #

MonadPlus m => GMonadZero * (GWrapped m) Source # 

Associated Types

type Zero (GWrapped m) (m :: GWrapped m -> * -> *) :: p Source #

Methods

gzero :: m (Zero (GWrapped m) m) a Source #

Monad m => GMonadFail * (GWrapped m) Source # 

Associated Types

type Fail (GWrapped m) (m :: GWrapped m -> * -> *) :: p Source #

Methods

gfail :: String -> m (Fail (GWrapped m) m) a Source #

(Alternative m, MonadPlus m) => GMonadOr * (GWrapped m) Source # 

Associated Types

type Or (GWrapped m) (m :: GWrapped m -> * -> *) (i :: GWrapped m) (j :: GWrapped m) :: p Source #

type OrInv (GWrapped m) (m :: GWrapped m -> * -> *) (i :: GWrapped m) (j :: GWrapped m) :: Constraint Source #

Methods

gorelse :: OrInv (GWrapped m) m i j => m i a -> m j a -> m (Or (GWrapped m) m i j) a Source #

MonadPlus m => GMonadPlus * (GWrapped m) Source # 

Associated Types

type Plus (GWrapped m) (m :: GWrapped m -> * -> *) (i :: GWrapped m) (j :: GWrapped m) :: p Source #

type PlusInv (GWrapped m) (m :: GWrapped m -> * -> *) (i :: GWrapped m) (j :: GWrapped m) :: Constraint Source #

Methods

gplus :: PlusInv (GWrapped m) m i j => m i a -> m j a -> m (Plus (GWrapped m) m i j) a Source #

type Unit * (GWrapped m) Source # 
type Unit * (GWrapped m) = ()
type Pure * (GWrapped f) Source # 
type Pure * (GWrapped f) = Unit * (GWrapped f)
type Zero * (GWrapped m) Source # 
type Zero * (GWrapped m) = Unit * (GWrapped m)
type Fail * (GWrapped m) Source # 
type Fail * (GWrapped m) = Unit * (GWrapped m)
type Fmap * (GWrapped f) i Source # 
type Fmap * (GWrapped f) i = i
type Replace * (GWrapped f) i Source # 
type Replace * (GWrapped f) i = Fmap * (GWrapped f) i
type PureCxt * (GWrapped f) i Source # 
type PureCxt * (GWrapped f) i = ()
type Inv * (GWrapped m) i j Source # 
type Inv * (GWrapped m) i j = (~) * i j
type Combine * (GWrapped m) i j Source # 
type Combine * (GWrapped m) i j = i
type Apply * (GWrapped f) i j Source # 
type Apply * (GWrapped f) i j = Combine * (GWrapped f) i j
type ApplyInv * (GWrapped f) i j Source # 
type ApplyInv * (GWrapped f) i j = Inv * (GWrapped f) i j
type LiftA2 * (GWrapped f) i j Source # 
type LiftA2 * (GWrapped f) i j = Apply * (GWrapped f) (Fmap * (GWrapped f) i) j
type LiftA2Inv * (GWrapped f) i j Source # 
type LiftA2Inv * (GWrapped f) i j = ApplyInv * (GWrapped f) i j
type Then * (GWrapped f) i j Source # 
type Then * (GWrapped f) i j = Apply * (GWrapped f) (Replace * (GWrapped f) i) j
type ThenInv * (GWrapped f) i j Source # 
type ThenInv * (GWrapped f) i j = ApplyInv * (GWrapped f) i j
type But * (GWrapped f) i j Source # 
type But * (GWrapped f) i j = i
type ButInv * (GWrapped f) i j Source # 
type ButInv * (GWrapped f) i j = ApplyInv * (GWrapped f) i j
type Bind * (GWrapped m) i j Source # 
type Bind * (GWrapped m) i j = Combine * (GWrapped m) i j
type BindInv * (GWrapped m) i j Source # 
type BindInv * (GWrapped m) i j = Inv * (GWrapped m) i j
type Join * (GWrapped m) i j Source # 
type Join * (GWrapped m) i j = Bind * (GWrapped m) i j
type JoinInv * (GWrapped m) i j Source # 
type JoinInv * (GWrapped m) i j = BindInv * (GWrapped m) i j
type Or * (GWrapped m) i j Source # 
type Or * (GWrapped m) i j = Combine * (GWrapped m) i j
type OrInv * (GWrapped m) i j Source # 
type OrInv * (GWrapped m) i j = Inv * (GWrapped m) i j
type Plus * (GWrapped m) i j Source # 
type Plus * (GWrapped m) i j = Combine * (GWrapped m) i j
type PlusInv * (GWrapped m) i j Source # 
type PlusInv * (GWrapped m) i j = Inv * (GWrapped m) i j

newtype Singleton i Source #

Constructors

Singleton i 

liftG :: m a -> GWrapped m p a Source #

Lift an object to GWrapped.