Есть ли готовый макрос для lisp, который позволяет объединять функции в цепочку? Я не мог найти один. Я попытаюсь объяснить, что я имею в виду с этим примером.
Вместо использования let * с большим количеством неиспользуемых промежуточных переменных, таких как:
(let*
((var1 (f1 x y))
(var2 (f2 x var1))
(var3 (f1 var2 z)))
var3)
Мне бы хотелось, чтобы это было написано так:
(->
(f1 x y)
(f2 x _)
(f1 _ z))
где, очевидно, _ будет возвращаемым значением из предыдущего выражения. Плюсом является возможность использования _1 , _2 , ... для ссылки на ранее возвращенные значения.
Это идея, точный синтаксис не так важен.
Я знаю, что это не так сложно написать, но кажется настолько полезным, что его уже нужно писать.