Существует такая вещь как continuation passing style. Есть соответствующая монада (способ писать линейный код), и комонада. На хабре была статья, и картинки в ней наталкивают на определённые мысли.
Я не буду делать вид, что до конца понял идею в статье, но издалека это всё здорово напоминает CPS с несколькими разными типами chaining'a продолжений.
Надеюсь, разбор чужих достижений (монады, комонады, их связь с async/await и (ко)монадой продолжения) поможет выразить это всё на более общепринятом языке. Именование переменных всё-таки важно. Я так же верю, что это сильно упростило бы код.
Вопросы производительности, кстати, тоже интересны, раз уж тут осторожно упоминается возможность использования сабжа в проектировании ОС:)
Я не буду делать вид, что до конца понял идею в статье, но издалека это всё здорово напоминает CPS с несколькими разными типами chaining'a продолжений.
Надеюсь, разбор чужих достижений (монады, комонады, их связь с async/await и (ко)монадой продолжения) поможет выразить это всё на более общепринятом языке. Именование переменных всё-таки важно. Я так же верю, что это сильно упростило бы код.
Вопросы производительности, кстати, тоже интересны, раз уж тут осторожно упоминается возможность использования сабжа в проектировании ОС:)