projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
1.0.1.16:
[sbcl.git]
/
src
/
code
/
list.lisp
diff --git
a/src/code/list.lisp
b/src/code/list.lisp
index
b328681
..
5f38f71
100644
(file)
--- a/
src/code/list.lisp
+++ b/
src/code/list.lisp
@@
-233,7
+233,8
@@
(defun last1 (list)
#!+sb-doc
"Return the last cons (not the last element) of a list"
(defun last1 (list)
#!+sb-doc
"Return the last cons (not the last element) of a list"
- (let ((rest list))
+ (let ((rest list)
+ (list list))
(loop (unless (consp rest) (return list))
(shiftf list rest (cdr rest)))))
(loop (unless (consp rest) (return list))
(shiftf list rest (cdr rest)))))
@@
-275,7
+276,7
@@
(declare (type index size))
(do ((count size (1- count))
(result '() (cons initial-element result)))
(declare (type index size))
(do ((count size (1- count))
(result '() (cons initial-element result)))
- ((zerop count) result)
+ ((<= count 0) result)
(declare (type index count))))
\f
(defun append (&rest lists)
(declare (type index count))))
\f
(defun append (&rest lists)
@@
-394,12
+395,12
@@
((endp elements))
(let ((ele (car elements)))
(typecase ele
((endp elements))
(let ((ele (car elements)))
(typecase ele
- (cons (rplacd (last1 splice) ele)
+ (cons (rplacd (last splice) ele)
(setf splice ele))
(setf splice ele))
- (null (rplacd (last1 splice) nil))
+ (null (rplacd (last splice) nil))
(atom (if (cdr elements)
(fail ele)
(atom (if (cdr elements)
(fail ele)
- (rplacd (last1 splice) ele)))
+ (rplacd (last splice) ele)))
(t (fail ele)))))
(return result)))
(null)
(t (fail ele)))))
(return result)))
(null)
@@
-1121,7
+1122,7
@@
(setf (car l) (cdar l)))
(setq res (apply fun (nreverse args)))
(case accumulate
(setf (car l) (cdar l)))
(setq res (apply fun (nreverse args)))
(case accumulate
- (:nconc (setq temp (last1 (nconc temp res))))
+ (:nconc (setq temp (last (nconc temp res))))
(:list (rplacd temp (list res))
(setq temp (cdr temp))))))))
(:list (rplacd temp (list res))
(setq temp (cdr temp))))))))