Factorial

Recursive:

func factorial_recursive(n) {
    n == 0 ? 1 : (n * __FUNC__(n-1))
}

Catamorphism:

func factorial_reduce(n) {
    1..n -> reduce({|a,b| a * b }, 1)
}

Iterative:

func factorial_iterative(n) {
    var f = 1
    {|i| f *= i } << 2..n
    return f
}

Built-in:

say 5!