Я только начал изучать Haskell, и я пытаюсь использовать лямбда-исчисление в Haskell. Я нашел это выражение, которое преобразует число церкви в число, но я не могу понять, что означает 0 в этом выражении. Я не могу найти его нигде:Что означает выражение haskell
zero = (\f -> \x -> x)
one = (\f -> \x -> f x)
two = (\f -> \x -> f (f x))
getNum church = church (\x-> (x + 1)) 0
Это самый последний ноль, который меня смущает. Это базовый случай или какой-то аргумент для этого лямбда-выражения?
Номера церквей - это функции, которые принимают два аргумента, а переменная 'church' - это просто такой номер. Таким образом, он вызывается с двумя аргументами, один является выражением лямбда, а другой равен 0. –
Хорошо, спасибо! Но выражение (\ x-> (x + 1)) имеет только один аргумент, поэтому при замене 0 это становится равным 0 + 1. Но как оно работает на 5 или около того? Я все еще не совсем понимаю. Является ли церковь предопределенной вещью на языке Хаскелла? –
Возможно, вы могли бы пройти через то, что оценивает 'getNum zero', а затем' getNum one', затем 'getNum two' –