(values iterator limit from-end
#'sequence:iterator-step #'sequence:iterator-endp
#'sequence:iterator-element #'(setf sequence:iterator-element)
- #'sequence:iterator-index #'sequence:iterator-copy))))
+ #'sequence:iterator-index #'sequence:iterator-copy)))
+ (:method ((s t) &key from-end start end)
+ (declare (ignore from-end start end))
+ (error 'type-error
+ :datum s
+ :expected-type 'sequence)))
;;; the simple protocol: the simple iterator returns three values,
;;; STATE, LIMIT and FROM-END.
(,setf (new-value) (funcall ,nsetf new-value ,s ,nstate))
(,index () (funcall ,nindex ,s ,nstate))
(,copy () (funcall ,ncopy ,s ,nstate)))
- (declare (dynamic-extent #',step #',endp #',elt
+ (declare (truly-dynamic-extent #',step #',endp #',elt
#',setf #',index #',copy))
,@body))))
(:argument-precedence-order sequence new old))
(defmethod sequence:substitute (new old (sequence sequence) &rest args &key
(start 0) end from-end test test-not count key)
- (declare (dynamic-extent args))
+ (declare (truly-dynamic-extent args))
(declare (ignore start end from-end test test-not count key))
(let ((result (copy-seq sequence)))
(apply #'sequence:nsubstitute new old result args)))
(:argument-precedence-order sequence new predicate))
(defmethod sequence:substitute-if (new predicate (sequence sequence) &rest args
&key (start 0) end from-end count key)
- (declare (dynamic-extent args))
+ (declare (truly-dynamic-extent args))
(declare (ignore start end from-end count key))
(let ((result (copy-seq sequence)))
(apply #'sequence:nsubstitute-if new predicate result args)))
(defmethod sequence:substitute-if-not
(new predicate (sequence sequence) &rest args &key
(start 0) end from-end count key)
- (declare (dynamic-extent args))
+ (declare (truly-dynamic-extent args))
(declare (ignore start end from-end count key))
(let ((result (copy-seq sequence)))
(apply #'sequence:nsubstitute-if-not new predicate result args)))
(replace sequence sequence :start2 end :start1 (- end c)
:end1 (- (length sequence) c))))
(sequence:adjust-sequence sequence (- (length sequence) c))))
- (declare (dynamic-extent #'finish))
+ (declare (truly-dynamic-extent #'finish))
(do ()
((funcall endp2 sequence state2 limit2 from-end2) (finish))
(let ((e (funcall elt2 sequence state2)))
(replace sequence sequence :start2 end :start1 (- end c)
:end1 (- (length sequence) c))))
(sequence:adjust-sequence sequence (- (length sequence) c))))
- (declare (dynamic-extent #'finish))
+ (declare (truly-dynamic-extent #'finish))
(do ()
((funcall endp2 sequence state2 limit2 from-end2) (finish))
(let ((e (funcall elt2 sequence state2)))
(replace sequence sequence :start2 end :start1 (- end c)
:end1 (- (length sequence) c))))
(sequence:adjust-sequence sequence (- (length sequence) c))))
- (declare (dynamic-extent #'finish))
+ (declare (truly-dynamic-extent #'finish))
(do ()
((funcall endp2 sequence state2 limit2 from-end2) (finish))
(let ((e (funcall elt2 sequence state2)))
(:argument-precedence-order sequence item))
(defmethod sequence:remove (item (sequence sequence) &rest args &key
from-end test test-not (start 0) end count key)
- (declare (dynamic-extent args))
+ (declare (truly-dynamic-extent args))
(declare (ignore from-end test test-not start end count key))
(let ((result (copy-seq sequence)))
(apply #'sequence:delete item result args)))
(:argument-precedence-order sequence predicate))
(defmethod sequence:remove-if (predicate (sequence sequence) &rest args &key
from-end (start 0) end count key)
- (declare (dynamic-extent args))
+ (declare (truly-dynamic-extent args))
(declare (ignore from-end start end count key))
(let ((result (copy-seq sequence)))
(apply #'sequence:delete-if predicate result args)))
(:argument-precedence-order sequence predicate))
(defmethod sequence:remove-if-not (predicate (sequence sequence) &rest args
&key from-end (start 0) end count key)
- (declare (dynamic-extent args))
+ (declare (truly-dynamic-extent args))
(declare (ignore from-end start end count key))
(let ((result (copy-seq sequence)))
(apply #'sequence:delete-if-not predicate result args)))
(replace sequence sequence :start2 end :start1 (- end c)
:end1 (- (length sequence) c))))
(sequence:adjust-sequence sequence (- (length sequence) c))))
- (declare (dynamic-extent #'finish))
+ (declare (truly-dynamic-extent #'finish))
(do ((end (or end (length sequence)))
(step 0 (1+ step)))
((funcall endp2 sequence state2 limit2 from-end2) (finish))
(sequence &key from-end test test-not start end key))
(defmethod sequence:remove-duplicates
((sequence sequence) &rest args &key from-end test test-not (start 0) end key)
- (declare (dynamic-extent args))
+ (declare (truly-dynamic-extent args))
(declare (ignore from-end test test-not start end key))
(let ((result (copy-seq sequence)))
(apply #'sequence:delete-duplicates result args)))
(defgeneric sequence:sort (sequence predicate &key key))
(defmethod sequence:sort ((sequence sequence) predicate &rest args &key key)
- (declare (dynamic-extent args))
+ (declare (truly-dynamic-extent args))
(declare (ignore key))
(let* ((length (length sequence))
(vector (make-array length)))
(defgeneric sequence:stable-sort (sequence predicate &key key))
(defmethod sequence:stable-sort
((sequence sequence) predicate &rest args &key key)
- (declare (dynamic-extent args))
+ (declare (truly-dynamic-extent args))
(declare (ignore key))
(let* ((length (length sequence))
(vector (make-array length)))