{
var Y = (f) -> (x) -> $f.invoke($Y.invoke($f)).invoke($x);
var factorial = $Y.invoke((fac) -> (n) -> $n == 0 ? 1 : $n * $fac.invoke($n - 1));
host.log($factorial.invoke(5));
}
var Y = (f) -> (x) -> $f.invoke($Y.invoke($f)).invoke($x);
var factorial = $Y.invoke((fac) -> (n) -> $n == 0 ? 1 : $n * $fac.invoke($n - 1));
host.log($factorial.invoke(5));
}