Package com.jnape.palatable.lambda.monad
Interface MonadReader<R,A,MR extends MonadReader<R,?,MR>>
- Type Parameters:
R- the environmentA- the outputMR- the witness
- All Superinterfaces:
Applicative<A,,MR> Functor<A,,MR> Monad<A,MR>
- All Known Subinterfaces:
BiMonoidFactory<A,,B, C> BiPredicate<A,,B> BiSemigroupFactory<A,,B, C> Effect<A>,Fn0<A>,Fn1<A,,B> Fn2<A,,B, C> Fn3<A,,B, C, D> Fn4<A,,B, C, D, E> Fn5<A,,B, C, D, E, F> Fn6<A,,B, C, D, E, F, G> Fn7<A,,B, C, D, E, F, G, H> Fn8<A,,B, C, D, E, F, G, H, I> Kleisli<A,,B, M, MB> Monoid<A>,MonoidFactory<A,,B> Predicate<A>,Semigroup<A>,SemigroupFactory<A,B>
- All Known Implementing Classes:
$,Absent,AddAll,All,Alter,And,Any,AutoBracket,Between,Both,Bracket,CartesianProduct,CatMaybes,Clamp,CmpEq,CmpEqBy,CmpEqWith,Coalesce,Collapse,Collapse,Compare,Compose,Compose,Concat,Cons,Constantly,Cycle,Difference,Distinct,Downcast,Drop,DropWhile,Empty,Endo,EndoK,Eq,Filter,Find,First,Flatten,FoldLeft,FoldRight,Force,GroupBy,GT,GTBy,GTE,GTEBy,GTEWith,GTWith,Head,Id,IfThenElse,InGroupsOf,Init,Inits,Intersection,Intersperse,Into,Into1,Into3,Into4,Into5,Into6,Into7,Into8,Iterate,Join,Last,Last,LazyRec,LeftAll,LeftAll,LeftAny,LeftAny,LiftA2,LiftA3,LiftA4,LiftA5,LiftA6,LiftA7,LT,LTBy,LTE,LTEBy,LTEWith,LTWith,Magnetize,MagnetizeBy,Map,Matching,Max,MaxBy,MaxWith,Merge,Merge,MergeHMaps,MergeMaps,Min,MinBy,MinWith,Not,Occurrences,Or,Over,Partition,Peek,Peek2,Pre,PrependAll,Present,PutAll,RateLimit,Re,ReaderT,ReduceLeft,ReduceRight,Repeat,Replicate,Reverse,RightAll,RightAll,RightAny,RightAny,RunAll,RunAll,ScanLeft,Sequence,Set,Size,Slide,Snoc,Sort,SortBy,SortWith,Span,State,StateT,Tail,Tails,Take,TakeWhile,Times,ToArray,ToCollection,ToMap,Trampoline,Trivial,Tupler2,Uncons,Under,Unfoldr,Union,Until,Upcast,View,Xor,Zip,ZipWith
A monad that is capable of reading an environment
R and producing a lifted value A. This
is strictly less powerful than an Fn1, loosening the requirement on Contravariant (and therefore
Profunctor constraints), so is more generally applicable, offering instead a local(Fn1)
mechanism for modifying the environment *after* reading it but before running the effect (as opposed to
Contravariant functors which may modify their inputs *before* running their effects, and may therefore alter
the input types).-
Method Summary
Modifier and TypeMethodDescriptiondefault <B> MonadReader<R, B, MR> discardL(Applicative<B, MR> appB) Sequence both thisApplicativeandappB, discarding thisApplicative'sresult and returningappB.default <B> MonadReader<R, A, MR> discardR(Applicative<B, MR> appB) Sequence both thisApplicativeandappB, discardingappB'sresult and returning thisApplicative.<B> MonadReader<R, B, MR> Chain dependent computations that may continue or short-circuit based on previous results.default <B> MonadReader<R, B, MR> Covariantly transmute this functor's parameter using the given mapping function.default <B> Lazy<? extends MonadReader<R, B, MR>> Given alazyinstance of this applicative over a mapping function, "zip" the two instances together using whatever application semantics the current applicative supports.MonadReader<R, A, MR> Modify thisMonadReader'senvironment after reading it but before running the effect.<B> MonadReader<R, B, MR> pure(B b) Lift the valuebinto this applicative functor.default <B> MonadReader<R, B, MR> zip(Applicative<Fn1<? super A, ? extends B>, MR> appFn) Given another instance of this applicative over a mapping function, "zip" the two instances together using whatever application semantics the current applicative supports.
-
Method Details
-
local
Modify thisMonadReader'senvironment after reading it but before running the effect.- Parameters:
fn- the modification function- Returns:
- the
MonadReaderwith a modified environment
-
flatMap
Chain dependent computations that may continue or short-circuit based on previous results. -
pure
Lift the valuebinto this applicative functor. -
fmap
Covariantly transmute this functor's parameter using the given mapping function. Generally this method is specialized to return an instance of the class implementing Functor. -
zip
Given another instance of this applicative over a mapping function, "zip" the two instances together using whatever application semantics the current applicative supports. -
lazyZip
default <B> Lazy<? extends MonadReader<R,B, lazyZipMR>> (Lazy<? extends Applicative<Fn1<? super A, ? extends B>, MR>> lazyAppFn) Given alazyinstance of this applicative over a mapping function, "zip" the two instances together using whatever application semantics the current applicative supports. This is useful for applicatives that support lazy evaluation and early termination. -
discardL
Sequence both thisApplicativeandappB, discarding thisApplicative'sresult and returningappB. This is generally useful for sequentially performing side-effects. -
discardR
Sequence both thisApplicativeandappB, discardingappB'sresult and returning thisApplicative. This is generally useful for sequentially performing side-effects.
-