DSSSL Library Reference: Part of the Modular DocBook Stylesheet distribution
Prev |  | Next

# list-put

## Name

list-put -- Replace a specific member of a list

## Synopsis

    (list-put vlist ordinal value #!optional (span 1))

## Description

Replaces the `ordinal`th value of `vlist` with `value`. If `span` > 1, replaces `ordinal` to `ordinal+span-1` values starting at `ordinal`.

## Example

`(list-put (1 2 3 4 5) 2 0 2)` returns `(1 0 0 4 5)`.

## Author

Norman Walsh, <ndw@nwalsh.com>

## Source Code

    (define (list-put vlist ordinal value #!optional (span 1))
      ;; Replace a specific member of a list
      (let loop ((result vlist) (count span) (k ordinal))
        (if (equal? count 0)
    	result
    	(let ((head (list-head result (- k 1)))
    	      (tail (list-tail result k)))
    	  (loop (append head (list value) tail) (- count 1) (+ k 1))))))

Prev | Home | Next
list-head | Up | decrement-list-members