#

Function FILL

Syntax:

fill sequence item `&key` start end => sequence

Arguments and Values:

sequence---a proper sequence.

item---a sequence.

start, end---bounding index designators of sequence. The defaults for start and end are `0` and nil, respectively.

Description:

Replaces the elements of sequence bounded by start and end with item.

Examples:

     (fill (list 0 1 2 3 4 5) '(444)) =>  ((444) (444) (444) (444) (444) (444))
     (fill (copy-seq "01234") #\e :start 3) =>  "012ee"
     (setq x (vector 'a 'b 'c 'd 'e)) =>  #(A B C D E)
     (fill x 'z :start 1 :end 3) =>  #(A Z Z D E)
     x =>  #(A Z Z D E)
     (fill x 'p) =>  #(P P P P P)
     x =>  #(P P P P P)

Side Effects:

Sequence is destructively modified.

Affected By: None.

Exceptional Situations:

Should be prepared to signal an error of type type-error if sequence is not a proper sequence. Should signal an error of type type-error if start is not a non-negative integer. Should signal an error of type type-error if end is not a non-negative integer or nil.

See Also:

replace, nsubstitute

Notes:

`(fill` sequence`` item`) == (nsubstitute-if` item`(constantly t)` sequence`)`

The following X3J13 cleanup issues, not part of the specification, apply to this section:

- RANGE-OF-START-AND-END-PARAMETERS:INTEGER-AND-INTEGER-NIL
- SUBSEQ-OUT-OF-BOUNDS

Copyright 1996-2005, LispWorks Ltd. All rights reserved.