Thread from comp.lang.tcl (no replies yet)
regarding lrange and stride ...
Strided lists are a somewhat common feature in Tcl commands, starting with foreach/lmap, lsort, ... Recently it occurred to me that [lrange $list $first $last] would be extensible to become more helpful for strided lists. In essence, an optional 4th argument would be the $stride: set list {a A 1 b B 2 c C 3 d D 4} lrange $list 1 2 3 -> {b B 2 c C 3} If not already obvious, the extra stride argument "pretends" that there is an extra list level of each 3 elements, {{a A 1} {b B 2} {c C 3} {d D 4}} on which the usual lrange happens, and then the extra level "disappears". In the simple "numeric" cases it would be essentially like: proc lrange_s {l f t s} { lrange $l [expr {$f*$s}] [expr {($t+1)*$s-1}] } ....plus extra code for nonnumeric indices "end", "end-42", "40+2",... and some special cases where [llength $list] is not an integral multiple of the stride.Click on article to view all threads in comp.lang.tcl