October 30th, 2008

nyaload

Рекурсивная лямбда-функция

Попытался придумать, как сделать рекурсивную лямбду, в одно выражение. Вот что вышло (Python):

factorial = lambda n : (lambda F : F(n, F))(lambda i, f : 1 if (0 == i) else i * f(i-1, f))

Осторожно, нужен мозг рака (или мозг раком)!

upd:
Я конечно же не первый. http://en.wikipedia.org/wiki/Anonymous_recursion