Interface Applicative<A,App extends Applicative<?,App>>
- Type Parameters:
A- The type of the parameterApp- The unification parameter to more tightly type-constrain Applicatives to themselves
- All Superinterfaces:
Functor<A,App>
- 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> Iso<S,,T, A, B> Iso.Simple<S,,A> Kleisli<A,,B, M, MB> Lens<S,,T, A, B> Lens.Simple<S,,A> Monad<A,,M> MonadError<E,,A, M> MonadReader<R,,A, MR> MonadRec<A,,M> MonadT<M,,A, MT, T> MonadWriter<W,,A, MW> Monoid<A>,MonoidFactory<A,,B> Predicate<A>,Prism<S,,T, A, B> Prism.Simple<S,,A> Schema<Values>,Semigroup<A>,SemigroupFactory<A,,B> TypeSafeKey<A,,B> TypeSafeKey.Simple<A>
- All Known Implementing Classes:
$,Absent,AddAll,All,Alter,And,Any,AutoBracket,Between,Both,Bracket,CartesianProduct,CatMaybes,Choice2,Choice2._A,Choice2._B,Choice3,Choice3._A,Choice3._B,Choice3._C,Choice4,Choice4._A,Choice4._B,Choice4._C,Choice4._D,Choice5,Choice5._A,Choice5._B,Choice5._C,Choice5._D,Choice5._E,Choice6,Choice6._A,Choice6._B,Choice6._C,Choice6._D,Choice6._E,Choice6._F,Choice7,Choice7._A,Choice7._B,Choice7._C,Choice7._D,Choice7._E,Choice7._F,Choice7._G,Choice8,Choice8._A,Choice8._B,Choice8._C,Choice8._D,Choice8._E,Choice8._F,Choice8._G,Choice8._H,Clamp,CmpEq,CmpEqBy,CmpEqWith,Coalesce,Collapse,Collapse,Compare,Compose,Compose,Compose,Concat,Cons,Const,Constantly,Cycle,Difference,Distinct,Downcast,Drop,DropWhile,Either,Either.Left,Either.Right,EitherT,Empty,Endo,EndoK,Eq,Filter,Find,First,Flatten,FoldLeft,FoldRight,Force,GroupBy,GT,GTBy,GTE,GTEBy,GTEWith,GTWith,Head,Id,Identity,IdentityT,IfThenElse,InGroupsOf,Init,Inits,Intersection,Intersperse,Into,Into1,Into3,Into4,Into5,Into6,Into7,Into8,IO,IO.Compose,Iterate,IterateT,Join,LambdaIterable,Last,Last,Lazy,Lazy.Compose,Lazy.Later,LazyRec,LazyT,LeftAll,LeftAll,LeftAny,LeftAny,LiftA2,LiftA3,LiftA4,LiftA5,LiftA6,LiftA7,LT,LTBy,LTE,LTEBy,LTEWith,LTWith,Magnetize,MagnetizeBy,Map,Market,Matching,Max,MaxBy,MaxWith,Maybe,Maybe.Just,Maybe.Nothing,MaybeT,Merge,Merge,MergeHMaps,MergeMaps,Min,MinBy,MinWith,Not,Occurrences,Or,Over,Partition,Peek,Peek2,Pre,PrependAll,Present,PutAll,RateLimit,Re,ReaderT,RecursiveResult,RecursiveResult.Recurse,RecursiveResult.Terminate,ReduceLeft,ReduceRight,Repeat,Replicate,Reverse,RightAll,RightAll,RightAny,RightAny,RunAll,RunAll,SafeT,ScanLeft,Sequence,Set,SingletonHList,Size,Slide,Snoc,Sort,SortBy,SortWith,Span,State,StateT,Tagged,Tail,Tails,Take,TakeWhile,These,These._A,These._B,These.Both,Times,ToArray,ToCollection,ToMap,Trampoline,Trivial,Try,Try.Failure,Try.Success,Tuple2,Tuple3,Tuple4,Tuple5,Tuple6,Tuple7,Tuple8,Tupler2,Uncons,Under,Unfoldr,Union,Until,Upcast,View,Writer,WriterT,Xor,Zip,ZipWith
An interface representing applicative functors - functors that can have their results combined with other functors
of the same instance in a context-free manner.
The same rules that apply to Functor apply to Applicative, along with the following
additional 4 laws:
- identity:
v.zip(pureId).equals(v) - composition:
w.zip(v.zip(u.zip(pureCompose))).equals((w.zip(v)).zip(u)) - homomorphism:
pureX.zip(pureF).equals(pureFx) - interchange:
pureY.zip(u).equals(u.zip(pure(f -> f.apply(y))))
Functor, Applicative instances that do not satisfy all of the functor laws, as well
as the above applicative laws, are not well-behaved and often break down in surprising ways.
For more information, read about Applicative Functors.
-
Method Summary
Modifier and TypeMethodDescriptiondefault <B> Applicative<B, App> discardL(Applicative<B, App> appB) Sequence both thisApplicativeandappB, discarding thisApplicative'sresult and returningappB.default <B> Applicative<A, App> discardR(Applicative<B, App> appB) Sequence both thisApplicativeandappB, discardingappB'sresult and returning thisApplicative.default <B> Applicative<B, App> Covariantly transmute this functor's parameter using the given mapping function.default <B> Lazy<? extends Applicative<B, App>> Given alazyinstance of this applicative over a mapping function, "zip" the two instances together using whatever application semantics the current applicative supports.<B> Applicative<B, App> pure(B b) Lift the valuebinto this applicative functor.<B> Applicative<B, App> zip(Applicative<Fn1<? super A, ? extends B>, App> 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
-
pure
Lift the valuebinto this applicative functor.- Type Parameters:
B- the type of the returned applicative's parameter- Parameters:
b- the value- Returns:
- an instance of this applicative over b
-
zip
Given another instance of this applicative over a mapping function, "zip" the two instances together using whatever application semantics the current applicative supports.- Type Parameters:
B- the resulting applicative parameter type- Parameters:
appFn- the other applicative instance- Returns:
- the mapped applicative
-
lazyZip
default <B> Lazy<? extends Applicative<B,App>> lazyZip(Lazy<? extends Applicative<Fn1<? super A, ? extends B>, App>> 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.- Type Parameters:
B- the resulting applicative parameter type- Parameters:
lazyAppFn- the lazy other applicative instance- Returns:
- the mapped applicative
- See Also:
-
discardL
Sequence both thisApplicativeandappB, discarding thisApplicative'sresult and returningappB. This is generally useful for sequentially performing side-effects.- Type Parameters:
B- the type of the returned Applicative's parameter- Parameters:
appB- the other Applicative- Returns:
- appB
-
discardR
Sequence both thisApplicativeandappB, discardingappB'sresult and returning thisApplicative. This is generally useful for sequentially performing side-effects.- Type Parameters:
B- the type of appB's parameter- Parameters:
appB- the other Applicative- Returns:
- this Applicative
-
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.
-