| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Effectful.Internal.Effect
Contents
Description
Type-safe indexing for Env.
This module is intended for internal use only, and may change without warning in subsequent releases.
Synopsis
- type Effect = (Type -> Type) -> Type -> Type
- class (e :: Effect) :> (es :: [Effect]) where
- reifyIndex :: Int
- type family xs :>> es :: Constraint where ...
- class KnownPrefix es => Subset (xs :: [Effect]) (es :: [Effect]) where
- subsetFullyKnown :: Bool
- reifyIndices :: [Int]
- class KnownPrefix (es :: [Effect]) where
- prefixLength :: Int
- class IsUnknownSuffixOf (xs :: [Effect]) (es :: [Effect])
- type Type = TYPE LiftedRep
Documentation
class (e :: Effect) :> (es :: [Effect]) where Source #
A constraint that requires that a particular effect e is a member of the
type-level list es. This is used to parameterize an Eff
computation over an arbitrary list of effects, so long as e is somewhere
in the list.
For example, a computation that only needs access to a mutable value of type
Integer would have the following type:
StateInteger:>es =>Effes ()
Minimal complete definition
Nothing
Methods
reifyIndex :: Int Source #
Get the position of e in es.
Note: GHC is kind enough to cache these values as they're top level CAFs,
so the lookup is amortized O(1) without any language level tricks.
Instances
| (TypeError (('Text "There is no handler for '" :<>: 'ShowType e) :<>: 'Text "' in the context") :: Constraint) => e :> ('[] :: [Effect]) Source # | |
Defined in Effectful.Internal.Effect Methods reifyIndex :: Int Source # | |
| e :> (e ': es) Source # | |
Defined in Effectful.Internal.Effect Methods reifyIndex :: Int Source # | |
| e :> es => e :> (x ': es) Source # | |
Defined in Effectful.Internal.Effect Methods reifyIndex :: Int Source # | |
type family xs :>> es :: Constraint where ... Source #
Deprecated: Usage of (:>>) slows down GHC too much, so it will be removed in 3.0.0.0. See https://github.com/haskell-effectful/effectful/issues/52#issuecomment-1269155485 for more information.
Convenience operator for expressing that a function uses multiple effects
in a more concise way than enumerating them all with (:>).
[E1, E2, ..., En]:>>es ≡ (E1:>es, E2:>es, ..., En :> es)
class KnownPrefix es => Subset (xs :: [Effect]) (es :: [Effect]) where Source #
Provide evidence that xs is a subset of es.
Minimal complete definition
Nothing
Instances
| (KnownPrefix es, IsUnknownSuffixOf xs es) => Subset xs es Source # | |
Defined in Effectful.Internal.Effect | |
| KnownPrefix es => Subset ('[] :: [Effect]) es Source # | |
Defined in Effectful.Internal.Effect | |
| (e :> es, Subset xs es) => Subset (e ': xs) es Source # | |
Defined in Effectful.Internal.Effect | |
class KnownPrefix (es :: [Effect]) where Source #
Calculate length of a statically known prefix of es.
Methods
prefixLength :: Int Source #
Instances
| KnownPrefix es Source # | |
Defined in Effectful.Internal.Effect Methods prefixLength :: Int Source # | |
| KnownPrefix es => KnownPrefix (e ': es) Source # | |
Defined in Effectful.Internal.Effect Methods prefixLength :: Int Source # | |
class IsUnknownSuffixOf (xs :: [Effect]) (es :: [Effect]) Source #
Require that xs is the unknown suffix of es.
Instances
| xs ~ es => IsUnknownSuffixOf xs es Source # | |
Defined in Effectful.Internal.Effect | |
| IsUnknownSuffixOf xs es => IsUnknownSuffixOf xs (e ': es) Source # | |
Defined in Effectful.Internal.Effect | |