Skip to content

Instantly share code, notes, and snippets.

@methylene
Created January 2, 2015 19:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save methylene/3363027b0e5152e222c0 to your computer and use it in GitHub Desktop.
Save methylene/3363027b0e5152e222c0 to your computer and use it in GitHub Desktop.
(in-package :cl-user)
(ql:quickload :optima)
(defpackage :ack-mann
(:use :common-lisp :optima)
(:export :ackermann))
(in-package :ack-mann)
(defun ackermann (s n)
(if (not (consp s))
n
(let ((k (car s))
(r (rest s)))
(match (cons k n)
((cons 1 _) (ackermann r (* 2 n)))
((cons _ 1) (ackermann (cons (1- k) r) 1))
((cons _ _) (ackermann (cons k (cons (1- k) r))
(1- n)))))))
; (ackermann '(3) 5)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment