If you are looking for a syntax closer to Haskell's, you can take a look at LiveScript (http://livescript.net/)
eg.
getUserFriends = (userName) ->
user <- findUser userName
friends <- findFriends user
...
Specifically, the section on "backcalls": http://livescript.net/#backcalls