1) defining a tail-recursive function: {def fibo {lambda {:n} {{lambda {:f :n :a :b} {:f :f :n :a :b}} {lambda {:f :n :a :b} {if {< :n 0} then the number must be positive! else {if {< :n 1} then :a else {:f :f {- :n 1} {+ :a :b} :a}}}} :n 1 0}}} 2) testing: {fibo -1} -> the number must be positive! {fibo 0} -> 1 {fibo 8} -> 34 {fibo 1000} -> 7.0330367711422765e+208 {map fibo {serie 1 20}} -> 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 We could also avoid any name and write an IIFE {{lambda {:n} {{lambda {:f :n :a :b} {:f :f :n :a :b}} {lambda {:f :n :a :b} {if {< :n 0} then the number must be positive! else {if {< :n 1} then :a else {:f :f {- :n 1} {+ :a :b} :a}}}} :n 1 0}} 8} -> 34