Недавно я закончил университетский курс, в котором были представлены Haskell и Agda (зависимый типизированный функциональный язык программирования) и задавался вопросом, можно ли заменить лямбда-исчисление в них комбинаторной логикой. С Haskell это кажется возможным с помощью комбинаторов S и K, что делает его бесшумным. Мне было интересно, что такое эквивалент для Агды. I.e., можно ли сделать язык типизированного функционального программирования эквивалентным Agda без использования каких-либо переменных?
Кроме того, можно каким-то образом заменить квантификацию на комбинаторы? Я не знаю, является ли это совпадением, но универсальная квантификация, например, делает подпись типа похожей на лямбда-выражение. Есть ли способ удалить универсальную количественную оценку из сигнатуры типа без изменения ее значения? Например. в:
forall a : Int -> a < 0 -> a + a < a
Можно ли выразить одно и то же, не используя forall?