The Ackermann function

On unary numbers, as lists

test/unary-ackermann: pass

(define (test/unary-ackermann _)
  (define A
    (λ (α β)
       (match/first
         (list α β)
         ((() ,ns) (cons '● ns))
         (((,m unquote ms) ()) (A ms '(●)))
         (((,m unquote ms) (,n unquote ns)) (A ms (A (cons m ms) ns))))))
  (⊦= '(● ● ● ● ● ● ● ● ●) (A '(a a) '(a a a))))
((eta 0.0) (memory #(6291456 1829816 1048576)) (stdout "") (stderr ""))