standard bashed)
;; fill vectors
;; a) the standard slow way
- (fill standard c :start offset :end (+ offset n))
+ (locally (declare (notinline fill))
+ (fill standard c :start offset :end (+ offset n)))
;; b) the blazingly fast way
(let ((value (loop for i from 0 by bitsize
until (= i sb-vm:n-word-bits)
(delete-duplicates (vector #\a #\b #\c #\a)
:test-not (lambda (a b) (not (char-equal a b))))
+
+;;; FILL on lists
+(let ((l (list 1 2 3)))
+ (assert (eq l (fill l 0 :start 1 :end 2)))
+ (assert (equal l '(1 0 3)))
+ (assert (eq l (fill l 'x :start 2 :end 3)))
+ (assert (equal l '(1 0 x)))
+ (assert (eq l (fill l 'y :start 1)))
+ (assert (equal l '(1 y y)))
+ (assert (eq l (fill l 'z :end 2)))
+ (assert (equal l '(z z y)))
+ (assert (eq l (fill l 1)))
+ (assert (equal l '(1 1 1)))
+ (assert (raises-error? (fill l 0 :start 4)))
+ (assert (raises-error? (fill l 0 :end 4)))
+ (assert (raises-error? (fill l 0 :start 2 :end 1))))
\f
;;; success