Earlier quoted context omitted.
> async/await came out of C# (well at least the JS version of it). Not sure if inspired by it, but async/await is just like Haskells do-notation, except specialized for one type: Promise/Future. A bit of a shame. Do-notation works for so many more types. - for lists, it behaves like list-comprehensions. - for Maybes it behaves like optional chaining. - and much more... All other languages pile on extra syntax sugar f…
I knew someone was going to bring up monads that's why I put JS version :) JS took the C# syntax.
It's interesting to wonder about the C# world where those things were more unified.
It's also interesting to explore in C# all the existing ways that Linq syntax can be used to work with arbitrary monads and also Task can be abused to use async/await syntax for arbitrary monads. (In JS, it is even easier to bend async/await to arbitrary monads given the rules of a "thenable" are real simple.)