I'm reading the doc of package async , and trying to find something similar to JavaScript's Promise, and I find Concurrently
, which is the most close concept that implemented Functor
, Applicative
(Promise.all), Alternative
(Promise.race). But it doesn't implement Monad
(Promise.then), I'm wondering why.
I think it maybe because (>>=)
is a sequential operation, which conflict with the name Concurrently
, but is this the only reason? is there some more important reason here?
The Monad
typeclass states that (<*>)
and ap
should be equivalent. (<*>)
for Concurrently
evaluates both the LHS and the RHS at the same time. ap
can't evaluate the RHS until the LHS is done, since (>>=)
needs to finish evaluating the LHS before it can call the function that gives it the RHS.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.