Комментарии 3
Каждая функция, таким образом, возвращает 2 значения - своё и аргумент, который нужно передать в следующую функцию (контекст).
Не хочу особенно на этом останавливаться - просто поверьте
Такие трюки превращают любую идею в "ах если бы мечта сбылась"
Попахивает велосипедом... Автор спрашивал мнение пользователей других языков:
оператор pop реализован в Rust макросом ?. Для его использования достаточно, чтобы выражение возвращало Result<T, E> или Option<T>. Конечно нужно контролировать тип ошибки.
мечта о произвольном pattern matching реализована, например, в FSharp, как Active Patterns - любая функция, принимающая на вход сопоставляемое выражение и возвращающая Option<T> - матчер сопоставляемого выражения с T.
Pattern Dependency Injection реализуется в ФП с поимощью монады Reader. Собственно монада и предполагает некоторый контекст над типом, так что и мысль о таскаемом за собой контексте что то очень напоминает монаду State.
POP-lang — воображаемый функциональный язык, основанный на Dependency injection