Rust's model of async-await is really interesting. They chose a suffix syntax (`foo.await` instead of `await foo`) because it composes better!
The evaluation model is also lazy: creating a future does nothing until it's awaited.
miniblog.
Related Posts
Compelling demonstration of parser combinators for date parsing: https://medium.com/mercury-bank/a-magic-date-input-using-parser-combinators-in-typescript-3c779741bf4c
You build up a series of functions for parsing elements, which composes much more nicely than regexps.
https://stevelosh.com/blog/2018/07/fun-with-macros-if-let/ is an excellent post on implementing if-let and when-let macros.
It discusses the different ways you could expand the code, and ensuring the macro composes with other (Common) Lisp features.
Really useful macro too, I'm a big fan of the elisp equivalent.