[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

*To*: CL-Cleanup@sail.stanford.edu*Subject*: Issue: MAP-INTO (version 2)*From*: Barry Margolin <barmar@Think.COM>*Date*: Mon, 19 Jun 89 13:19 EDT*In-reply-to*: <19890619161633.3.MOON@EUPHRATES.SCRC.Symbolics.COM>

Date: Mon, 19 Jun 89 12:16 EDT From: David A. Moon <Moon@stony-brook.scrc.symbolics.com> The function must take at least as many arguments as there are sequences provided, and at least one sequence must be provided. I suggest relaxing this, to allow zero argument sequences. The length of the result-sequence would control the number of times the function is called. This would permit something like (map-into my-sequence #'(lambda () (random 1.0))) to fill a sequence with random numbers. This appears to be what Genera does. The arguments result-sequence and each element of sequences can each be either a list or a vector (one-dimensional array). Note that nil is considered to be a sequence, of length zero. If result-sequence and each element of sequences are not all the same length, the iteration terminates when the shortest sequence is exhausted. I assume that the result-sequence is included when determining the shortest sequence. If result-sequence is a vector with a fill pointer, or an adjustable vector, how does this affect things? Intuitively, the following things seem reasonable: 1) The result-sequence's fill pointer could be set to the number of elements modified (i.e. the minimum of the sequences' lengths). 2) The result-sequence should be filled as if its fill pointer were initially 0, and each result is then VECTOR-PUSHed onto the vector. This implies (1). 3) When minimizing the sequence lengths, (array-dimension result-sequence 0) should be used, rather than (length result-sequence), so that the previous value of the result sequence's fill pointer does not cause the iteration to terminate prematurely. This also implies that the VECTOR-PUSH will never try to go beyond the size of the vector. In the case where no argument sequences are provided, it might be reasonable to use (length result-sequence), but I think it would be better to maintain consistency. Fill pointers are generally used to indicate which elements a reader should look at, not to restrict filling in (for instance, make-array :initial-element initializes ALL the elements, not just up to the fill pointer). Genera appears to use (length result-sequence) all the time. barmar

- Prev by Date:
**mail lossage (and Issue: READ-CASE-SENSITIVITY (Version 3))** - Next by Date:
**Re: Issue: DATA-IO (version 7)** - Previous by thread:
**mail lossage (and Issue: READ-CASE-SENSITIVITY (Version 3))** - Next by thread:
**Re: Issue: MAP-INTO (version 2)** - Index(es):