:import std/Combinator . :import std/Number/Unary U :import std/Math . # unary ackermann ackermann-unary [0 [[U.inc 0 1 (+1u)]] U.inc] :test (ackermann-unary (+0u) (+0u)) ((+1u)) :test (ackermann-unary (+3u) (+4u)) ((+125u)) # ternary ackermann (lower space complexity) ackermann-ternary y [[[=?1 ++0 (=?0 (2 --1 (+1)) (2 --1 (2 1 --0)))]]] :test ((ackermann-ternary (+0) (+0)) =? (+1)) ([[1]]) :test ((ackermann-ternary (+3) (+4)) =? (+125)) ([[1]]) main [[0]]