qh,      !"#$%&'()*+,-./0 1 2 3 4 5 6 7 8 9 : ;<= > ? @ A B C DE F GH I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n opqrstuvwxyz{|}~ Safe-Inferred !"(246=JK     None&'=K  Provides a conditional using an  alternation# operation, as opposed to using  Subeffect WType family for describing how to combine effects of the two branches of an if $Conditional on effectful operations      None&'6=K!Specifies subeffecting behaviour vSpecifies "parametric effect monads" which are essentially monads but annotated by a type-level monoid formed by  and  -Effect of a trivially effectful computation |*Cominbing effects of two subcomputations |% provides a way to give instances of  their own constraints for   Effect-parameterised version of D. Annotated with the 'Unit m' effect, denoting pure compuation Effect-parameterise version of . (bind). Combines two effect annotations f and g$ on its parameter computations into    None<=JKType-level addition $The counter has no semantic meaning Provides a way to countc in the type-level with a monadic interface to sum up the individual counts of subcomputations -Define type constructors for natural numbers A ) provides a way to increment the counter None(=JKProvides a way to count in the type-level with a monadic interface to sum up the individual counts of subcomputations. Instead of using our own inductive natural number typ, this uses the  kind from  $The counter has no semantic meaning A  ) provides a way to increment the counter  ! !  !None!"<=K(1Provides an indexed version of the |Maybe| monad "#$%&'()*+"#$%&'( ('&"%$#+*)"%$#&'()*+None!"=K,All monads are parametric effect monads with a trivial singleton-monoid index. This wrapper wraps normal monads into the Effect interface using the M contructor.Wrap regular monads up .Unwrap a monad ,-./,-.,-./,-./ None&'(=K0PData type denoting either a morphisms with source and target types, or identity 3Implements Bob Atkey's 'parametric monads', and also the Control.Monad.Indexed package, by emulating indexing by morphisms Data type of morphisms 01234501234340215021345 None%&'(2346=JKHProvides a effect-parameterised version of the class reader monad. Effects are sets of variable-type pairs, providing an effect system for reader effects. KK for a variable v of type a, raising an effect LFProvides a way to emulated the ImplicitParams features of GHC/Haskell If s is a subset of t then, s is a subeffect of t HIJKL6789:=ABCEFHIJKLHIJKLFE:9876=CBAHIJKL None (246=JKMProvides a weak reader monad, which can only read an item once. Provides an effect system as a list of the items that have been read PP for a value of type a MNOPMNOPPMNOMNOP None%&'(2346=JKQ4Captures what it means to be a set of state effects R"Calculate just the writer effects S"Calculate just the reader effects TParametric effect state monad XPUpdate reads, that is any writes are pushed into reads, a bit like intersection SValue-level remove duplicates from a type-level list and turn different sorts into a| RType-level remove duplicates from a type-level list and turn different sorts into a| \Describes an effect action s on a value of type a ^&Provides a wrapper for effect actions `Provides an effect-parameterised version of the state monad, which gives an effect system for stateful computations with annotations that are sets of variable-type-action triples. +Distinguish reads, writes, and read-writes d"Union operation for state effects ~Intersects a set of write effects and a set of read effects, updating any read effects with any corresponding write value eRead from a variable v of type a. Raise a read effect. fWrite to a variable v with a value of type a. Raises a write effect +QRSTUVWXYZ[\]^_`abcdef#6789:>?@ABCEFQRSTUVWXYZ[\]^_`abcdef#CBAefTUVFE\]`cba^_:9876dZSRY?[QWX@>"QRSTUVWXYZ[\]^_`cbadef\] None !"%(246<=KjMParametric effect update monad. A bit like a writer monad specialised to the  monoid, providing a single memory cell that can be updated, but with heterogeneous behaviour. Provides an effect system that explains whether a single memory cell has been updated or not m0Update the memory cell with a new value of type a ghijklmnghijklmjlkghinmghijlkmnNone !"236<=K opqrstuvopqrstutsprqouvoprqstuvNone (246=JKwProvides a kind of writer monad, which can only write an item once (no accumulation), an effect system as a list of the items that have been written zWrite a value of type a wxyzwxyzzwxywxyzNone!"'(2346=JKM@Computes supersets of sets of variable-type mappings, using the  operation {Provides an effect-parameterised version of the writer monad. Effects are sets of variable-type pairs, providing an effect system for writer effects. ~Write to variable v with value of type a ;Define the operation for removing duplicates using mappend {|}~6789:;<ABCDFG{|}~{|}~FDCBAG:9876<; {|}~None &'(6=KM$Specifies sub-coeffecting behaviour +Zips two coeffecting computations together |Specifies "parametric coeffect comonads" which are essentially comonads but annotated by a type-level monoid formed by  and  "Coeffect-parameterised version of G, annotated with the 'Unit m' effect, denoting pure contexts !Coeffect-parameterise version of &. The two coeffec annotations s and tV on its parameter computations get combined in the parameter computation by    None !"&(246=JKmProvides 'reader monad'-like behaviour but as a comonad, using an indexed version of the product comonad  for the value of variable v, e.g., 'ask (Var::(Var "x"))'  !"#$%&'()*+,-./012//32456789:;<=>?@AB C D E : : FGH1GHIGHJGHKGHKGHLGHMGHNGHGHOGHPGHQGHRGHSGHTGHUGHUGHV W X Y Z [ W \ Y Z ] ^ _ ` ` a b c L d e f f g h h i j \ V k l c c m h n o l pqr01stjulvvwlxyz{|}~)'(XZ/3    effect-monad-0.6Control.Effect.WriterControl.Effect.Helpers.ListControl.Effect.CondControl.EffectControl.Effect.CounterControl.Effect.CounterNatControl.Effect.MaybeControl.Effect.MonadControl.Effect.ParameterisedControl.Effect.ReaderControl.Effect.StateControl.Effect.ReadOnceReaderControl.Effect.UpdateControl.Effect.VectorControl.Effect.WriteOnceWriterControl.CoeffectControl.Coeffect.CoreaderGHCTypeLitsbase GHC.TypeLitsSymbolSplitsplit:++ListConsNilappend $fSplit:ys $fSplit[]xsCondAltInvAltifM SubeffectsubEffectUnitPlusInvreturn>>=>>fail:+CounterSZtickforget$fEffectNatCounterIMaybeIDynIJustINothingUTF $fCond*IMaybe$fEffect*IMaybe $fShowIMaybeMonadWrapunWrap$fEffect*MonadMorphIdM$fEffectMorphTtype-level-sets-0.5 Data.Type.SetYXVar UnionableUnionSubsetSortableSortExtEmptySetIsSet:->unionReaderIxR runReaderaskmergeRStateSetWritesReadsStaterunState IntersectRUpdateUnionSSetLike:!ActionEffRWWgetput runUpdateNoPutPut$fEffectMaybeUpdateAddVector$fEffect*Vector WriteOnce runWriteOnceWriter runWriter Subcoeffectsubco CoeffectZipMeetCzipInvczipCoeffectextractextend IxCoreader runCoreader$fCoeffectZip[]IxCoreader$fCoeffect[]IxCoreader TFCo:R::++:ysTFCo:R::++[]ys$fEffect*Counter TFCo:R::+nS TFCo:R::+nZNat$fSubeffect[]Readerst$fEffect[]Reader$fCond[]ReaderNubableNub intersectRStateSetPropertiesupdatenub$fEffect[]State $fUpdate:: $fUpdate:as' $fUpdate:as'0 $fUpdate::0 $fUpdatexs[] $fNubable:: $fNubable:as'$fNubable:as'0 $fNubable::0 $fNubable[][]$fShow:! $fShowAction $fShowAction0 $fShowAction1 Data.MaybeMaybe TFCo:R:AddSm TFCo:R:AddZm$fEffect[]WriteOnceSuperset Data.Monoidmempty $fNubable:superset $fSuperset:: $fSuperset[]:$fSuperset[][]$fSubeffect[]Writerst$fEffect[]Writer