diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2015-12-01 12:22:13 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2015-12-01 12:22:13 -0800 |
commit | 376dc57915875861988cf6437d983a34670a2d02 (patch) | |
tree | 93d80af1d88539c3674f3c04b04c4604c3dc2e29 /deque.lisp | |
parent | ef2d5d7c9f1422eaa9cb3a2a291e19e7eff1f8df (diff) | |
download | lisp-snippets-376dc57915875861988cf6437d983a34670a2d02.tar.gz lisp-snippets-376dc57915875861988cf6437d983a34670a2d02.tar.bz2 lisp-snippets-376dc57915875861988cf6437d983a34670a2d02.zip |
Drop eval-when: functions aren't macro helpers.
Diffstat (limited to 'deque.lisp')
-rw-r--r-- | deque.lisp | 41 |
1 files changed, 20 insertions, 21 deletions
@@ -22,28 +22,27 @@ ;;; ;;; -(eval-when (:compile-toplevel :load-toplevel :execute) - (defun bisect-list (list &optional (minimum-length 0)) - (do ((double-skipper (cddr list) (cddr double-skipper)) - (single-skipper list (cdr single-skipper)) - (length 2 (+ length (if (cdr double-skipper) 2 1)))) - ((null double-skipper) - (cond - ((< length minimum-length) - (values list nil)) - ((consp single-skipper) - (multiple-value-prog1 - (values list (cdr single-skipper)) - (setf (cdr single-skipper) nil))) - (t (values list nil)))))) +(defun bisect-list (list &optional (minimum-length 0)) + (do ((double-skipper (cddr list) (cddr double-skipper)) + (single-skipper list (cdr single-skipper)) + (length 2 (+ length (if (cdr double-skipper) 2 1)))) + ((null double-skipper) + (cond + ((< length minimum-length) + (values list nil)) + ((consp single-skipper) + (multiple-value-prog1 + (values list (cdr single-skipper)) + (setf (cdr single-skipper) nil))) + (t (values list nil)))))) - (defun pop-deque-helper (facing-piece other-piece) - (if (null facing-piece) - (multiple-value-bind (head tail) (bisect-list other-piece 10) - (let ((remaining (if tail head)) - (moved (nreverse (or tail head)))) - (values (first moved) (rest moved) remaining))) - (values (first facing-piece) (rest facing-piece) other-piece)))) +(defun pop-deque-helper (facing-piece other-piece) + (if (null facing-piece) + (multiple-value-bind (head tail) (bisect-list other-piece 10) + (let ((remaining (if tail head)) + (moved (nreverse (or tail head)))) + (values (first moved) (rest moved) remaining))) + (values (first facing-piece) (rest facing-piece) other-piece))) (defmacro pop-deque (facing-piece other-piece) (let ((result (gensym)) |