function fix(f) {
var k = function (x) {
return f(function (z) { return x(x)(z) })
}
return k(k)
var F = function (f) {
return function (n) {
return n == 0 ? 1 : n * f(n - 1)
var fact = fix(F)
print("the factorial of 12 is", fact(12))