( defun fill ( sequence item &key ( start 0 ) end ) ( reckless ( with-start-end ( start end sequence ) ( if ( listp sequence ) ( do* ( ( x ( nthcdr start sequence ) ( cdr x ) ) ( i ( - end start ) ( 1- i ) ) ) ( ( zerop i ) ) ( declare ( fixnum i ) ( cons x ) ) ( setf ( first x ) item ) ) ( si::fill-array-with-elt sequence item start end ) ) ) ) )