RosettaCodeData/Task/Ackermann-function/Lambdatalk/ackermann-function.lambdatalk

23 lines
447 B
Plaintext

{def ack
{lambda {:m :n}
{if {= :m 0}
then {+ :n 1}
else {if {= :n 0}
then {ack {- :m 1} 1}
else {ack {- :m 1} {ack :m {- :n 1}}}}}}}
-> ack
{S.map {ack 0} {S.serie 0 300000}} // 2090ms
{S.map {ack 1} {S.serie 0 500}} // 2038ms
{S.map {ack 2} {S.serie 0 70}} // 2100ms
{S.map {ack 3} {S.serie 0 6}} // 1800ms
{ack 2 700} // 8900ms
-> 1403
{ack 3 7} // 6000ms
-> 1021
{ack 4 1} // too much
-> ???