Давайте посмотрим, анализировать код для факториала в Haskell, используя функцию лямбда:Рекурсивные лямбда в Haskell
y f x = f (y f) x
factorial = y (\t n -> if n == 1 then 1 else n * t(n-1))
И я не могу понять, как это работает. Я знаю, что это связано с исчислением лямбда, но в настоящее время я не знаком с этим, поэтому я должен понимать без него или с минимальными знаниями. Мое сомнение есть: Что такое f в определении factorial? Я имею в виду это f: y f x = f (y f) x.
Итак, что здесь? y (\ t n -> if n == 1 then 1 else n * t (n-1))
Пожалуйста, объясните мне, что, возможно, рекурсия?
Обратите внимание, что сама лямбда не является рекурсивной; он просто принимает функцию, которая применяется к 'n - 1'. – chepner
Да, я вижу. : D – Gilgamesz