A Methodology generalises a semantic process from b to c.
Constructors
Process :: b -> Methodology b c m c
:: a typeCtrl KGHC 9.10.3 · lts/ghc-9.10.x · c74966e · 2026-09-27
Modulepolysemy-methodology-0.2.2.0Haskell2010
Domain modelling algebra for polysemy.
A Methodology generalises a semantic process from b to c.
Process :: b -> Methodology b c m cRun a Methodology using a pure function.
runMethodologySem :: (b -> Sem r c)A monadic function from b to c using effects in r.
-> Sem (Methodology b c ': r) a-> Sem r aRun a Methodology using a monadic function with effects in r.
cutMethodology :: Members '[Methodology b c, Methodology c d] r=> Sem (Methodology b d ': r) aMethodology effect to decompose.
-> Sem r aCut a Methodology into two pieces at a midpoint.
cutMethodology' :: Sem (Methodology b d ': r) aMethodology effect to decompose.
-> Sem (Methodology b c ': Methodology c d ': r) aReinterpreting version of cutMethodology.
cutMethodology3 :: Members '[Methodology b c, Methodology c d, Methodology d e] r=> Sem (Methodology b e ': r) aMethodology effect to decompose.
-> Sem r aCut a Methodology into three pieces using two cuts.
cutMethodology3' :: Sem (Methodology b d ': r) aMethodology effect to decompose.
-> Sem (Methodology b c ': Methodology c d ': Methodology d e ': r) aReinterpreting version of cutMethodology.
divideMethodology :: Members '[Methodology b c, Methodology b c', Methodology (c, c') d] r=> Sem (Methodology b d ': r) aMethodology effect to decompose.
-> Sem r aDivide a Methodology into two components using a Methodology that accepts a pair.`
Reinterpreting version of divideMethodology.
decideMethodology :: Members '[Methodology b (Either c c'), Methodology c d, Methodology c' d] r=> Sem (Methodology b d ': r) a`Methodology effect to decompose.
-> Sem r aDecide between two Methodologys using a Methodology that computes an Either.
Reinterpreting version of decideMethodology.
Decompose a Methodology into several components to be recombined. This is cutMethodology specialised to HList.
Reinterpreting version of decomposeMethodology.
Decompose a Methodology into several components over three sections with two cuts.
Factor a Methodology decomposed over an HList in the result by a Methodology to the first variable.
Finish an HList separated Methodology by consuming it for no effect.
Factor a Methodology decomposed over an HList in the source by a Methodology from the first variable. Assumes the result is a Monoid.
Finalise an HList separated Methodology in the source by returning the Monoid unit.
Run a Methodology (f b) (f c) by way of a Methodology b c. Note that
f must be Traversable.
Reinterpreting version of fmapMethodology.
Run a Methodology (f (g b)) (f (g c))) by way of a Methodology b c. Note that
f and g must be Traversable.
Reinterpreting version of fmap2Methodology.
Run a Methodology b (f c) in terms of a Methodology b c.
Reinterpreting version of pureMethodology.
Run a Methodology (f b) (f c) by way of a Methodology b (f c). Note that
f must be both Traversable and Monad.
Reinterpreting version of bindMethodology.
Run a Methodology (t b) (f (t b)) by way of a Methodology b (f c). Note that
t must be Traversable and f must be Applicative.
Reinterpreting version of traverseMethodology.
Run a Methodology concatenating the results as a monoid.
Reinterpreting version of mconcatMethodology.
Tee the output of a Methodology, introducing a new Output effect to be handled.
Make a Methodology depend on an additional input, introducing a new Input effect to be handled.
Run a Methodology as a KVStore, using the input as a key and the output as the value.
runMethodologyAsKVStoreWithDefault :: Members '[KVStore k v] r=> vA default value v.
-> Sem (Methodology k v ': r) a-> Sem r aRun a Methodology as a KVStore, with a default value for lookup failure.
Run a Methodology targetting a Monoid without consuming it, pure version. This should probably be considered an anti-pattern, and it's probably better to decompose the inputs fully, but is otherwise sound.
Run a Methodology targetting a Monoid without consuming it, Sem version. This should probably be considered an anti-pattern, and it's probably better to decompose the inputs fully, but is otherwise sound.
Trace a String based on the input to a Methodology.
traceMethodologyEnd Trace a String based on the output to a Methodology.
Trace both the start and the end of a Methodology.