Really? Do you have a source on this? I was under the impression that C# was the pioneer here.
Really? Do you have a source on this? I was under the impression that C# was the pioneer here.
Specifically continuation monad describes asynchronous computation (promises) and was one of the motivating examples In the early 90s going back all the way to Moggis original "notions of computations" paper from 1991 http://homepages.inf.ed.ac.uk/wadler/topics/monads.html
Async/await and LINQ were the brainchild of Erik Meijer. A haskell researcher.
Also see https://news.ycombinator.com/item?id=25565229 from a recent discussion here.
Specifically http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.72.... where Eric tells his story about bringing haskell concepts to .NET
One of the things I liked best about F#.
Haskell allows more generalized do blocks because of HKTs. I blogged about this a few years ago. https://www.sparxeng.com/blog/software/higher-kinded-fun-in-.... (Granted, I've never had a use for that beyond code golf).
And C# is nice because you can await anywhere in an expression instead of just at a "let!" declaration. This is something I do miss when using F#.
But agreed, F# is usually my language of choice.
Here are some references on when it was invented / implemented: https://www.reddit.com/r/haskell/comments/8rkrgq/when_was_do...
Also a JS gist on async/await and do-notation: https://gist.github.com/MaiaVictor/bc0c02b6d1fbc7e3dbae838fb...
- https://d1wqtxts1xzle7.cloudfront.net/50657913/p260-liskov.p...
- http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.97....