[SS]: Python's alike range. The semantic should be exactly the same (and seems the more sensible for Tcl also). # range ?start? end ?step? # # Python's alike range function. # Returns the [start,end) integer range. # # Example: # # foreach x [range 0 10] y [range 20 0 -2] { # puts "$x $y" # } proc range args { set l [llength $args] if {$l == 1} { set start 0 set step 1 set end [lindex $args 0] } elseif {$l == 2} { set step 1 foreach {start end} $args break } elseif {$l == 3} { foreach {start end step} $args break } else { error {wrong # of args: should be "range ?start? end ?step?"} } set result {} if {$start <= $end} { for {set j $start} {$j < $end} {incr j $step} { lappend result $j } } else { for {set j $start} {$j > $end} {incr j $step} { lappend result $j } } return $result } ---- See also [Integer range generator]