← Back to context

Comment by shortrounddev2

10 months ago

because an async function doesn't require you to change syntaxes to get them to work

It's actually sort of the other way round. C# has hardcoded syntax for async/await. F#'s syntax for async/await is a fully-general user-accessible mechanism.

  • They're not so different in that regard. C# `await` can be adapted by making an awaitable and awaiter type[1], which isn't to dissimilar to how a computation expression in F# needs to implement methods `Bind`, `Return`, `Yield`, etc.

    In both languages these patterns make up for the absence of typeclasses to express things like a functor, applicative, monad, comonad, etc.

    [1]https://ecma-international.org/wp-content/uploads/ECMA-334_7...