Hacker News new | past | comments | ask | show | jobs | submit login

This is not as general as a monad though, it's just feeding the output of one function into the next.

I'm sure you know this, but the thing that makes monads a more general solution is that (because bind depends on a value produced at runtime) one can dynamically alter control flow, i.e:

    fetch = do
      user <- fetchUser "url"
      if userEmpty user
        then do
          fetchUserDetails "details"
          fetch -- recurse
        else
          fetchAddress user
For that to work, your functions inside the `composeAsync` array would need to able to return nested promises and at that point you've just reimplemented the continuation monad :)



Yeah, I guess I may have not completely implemented the continuation monad, but my point was precisely what you just said. That is, it's totally possible to implement continuation monads in vanilla javascript. It's not only possible, but its reasonably easy to do without heavy lifting.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: