# Tail recursive Fibonacci function

fib_aux = { x, next, result |
  true? x == 0,
    result,
    { fib_aux x - 1, next + result, next }
}

fibonacci = { x |
  fib_aux x, 1, 0
}

p fibonacci 50