summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--deque.lisp41
1 files changed, 20 insertions, 21 deletions
diff --git a/deque.lisp b/deque.lisp
index 7fca7e1..d6fa1b8 100644
--- a/deque.lisp
+++ b/deque.lisp
@@ -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))