5 ms·
I'm almost sure that Haskell has had its "do notation" even before 2007. And maybe even Scala its "for comprehension".
by sideeffffect 5y ago
I'm almost sure that Haskell has had its "do notation" even before 2007.
And maybe even Scala its "for comprehension".
- dharmaturtle 5y agoYeah - I was limiting my post to explicit async/await. Don Syme, creator of F#, had a nice thread on the roots of async/await, though it doesn't mention do-notation: https://mobile.twitter.com/dsymetweets/status/1407400817917939713 https://mobile.twitter.com/dsymetweets/status/14074008179179... I'm still annoyed that most other languages stole async/await... but not the more general monadic/do notation. Instead we get elvis operators, chaining functions, etc.
- sideeffffect 5y agoF#'s "Computation expressions" are the same sort of thing as the mentioned Haskell's "do notation" and Scala's "for comprehension". They're just thin syntactic sugar for "callbacks" -- chaining maps/binds/flatmaps/etc. Even though F#'s "Computation expressions" are very cleverly thought out and more general. https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/computation-expressions https://docs.microsoft.com/en-us/dotnet/fsharp/language-refe... Async/await for example in C# or Rust is different. This translates the program into transition automata/coroutines.