#* http://rosettacode.org/wiki/Ackermann_function
  Implementation of the Ackermann function
*#

ackermann = { m, n |
  when { m == 0 } { n + 1 }
    { m > 0 && n == 0 } { ackermann(m - 1, 1) }
    { m > 0 && n > 0 } { ackermann(m - 1, ackermann(m, n - 1)) }
}

p ackermann 3, 4  #Prints 125