Wonderful review, written in a down to earth style which succinctly captures some of my own thoughts, thank you.
Thanks.
If you have a moment I would love to hear your thoughts on this style of code, which seems to share some of the same interface styles as LEAF:
Even worse than lambda-style of LEAF. With lambdas, I can at least use IDE/editor to collapse individual lambda blocks and get some overview of the structure, but editor features are of no use for this lisp-ish style of nested function invocations. I skimmed over the code, and when I got to `get_stop_token` and `stopWrite...` (the last two lines before catching system error) arguments, I have no idea which function they belong to.
Maybe it would be somewhat more appealing if inline lambdas were own functions.
Even without knowing what all these functions do, it seems extremely unintuitive having to wrap lambdas into `lazy` and `defer`. (And what's the difference, their definitions are totally unilluminating.)
Also, how is this supposed to be debugged? How are the error messages when you mess something up?
This looks nightmare-ish, way worse than LEAF. The basic structure of C++ is block-based, this abuses function invocation notation to the point of almost forcing the user into writing LISP.
________________________________
From: Vinnie Falco
My informal, "stream of thought" review, written during linearly reading the documentation.
Wonderful review, written in a down to earth style which succinctly captures some of my own thoughts, thank you.
Then I start reading the example code and the first thing that strikes me: `try_handle_all` takes a list of lambdas. Oo. Looks like unmaintainable mess in the long run.
If you have a moment I would love to hear your thoughts on this style of code, which seems to share some of the same interface styles as LEAF: https://github.com/facebookexperimental/libunifex/blob/8311d141d6654acbff269... This is the direction that wg21 is going in with respect to asynchrony. Thanks