summaryrefslogtreecommitdiff
path: root/queue.lisp
blob: 3e02a36e7cf3546ca290b91a6865d99e8f1b34a5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
(declaim (optimize (speed 3) (safety 1)))

(defun queue:new ()
  (cons nil nil))

(defun queue:push (datum q)
  (let ((element (cons datum nil)))
    (if (car q)
      (setf (cddr q) element)
      (setf (car q) element))
    (setf (cdr q) element)
    q))

(defun queue:pop (q)
  (pop (car q)))

(defun queue:peek (q)
  (caar q))

(defun queue:to-list (q)
  (car q))

(defun queue:from-list (lst)
  (cons lst (last lst)))