I'm looking to learn F#, but one thing that's confusing to me is the computation expression (do-notation??) syntax and desugaring.
In haskell, you have a very simple Monad typeclass and rules for desugaring do-notation into bind and return. There's no magic involved in adding keywords; the only thing must match up are the types.
In F# there's a bunch of builders, and keywords, and complexity.
Is there a good explanation of how to map one concept to the other?
I basically want to know how I map
do
x <- monadicComputation
foo x
someOtherMonadicComputation
let y = somePureComputation x
return $ bar y
to F#.
The only keywords in the haskell are do, (<-) and let.