Posted to tcl by mjanssen at Mon Sep 16 09:01:21 GMT 2013view pretty
proc my_mrange {a b args} { set result {} set start [expr {min($a,$b)}] set stop [expr {max($a,$b)}] for {set i $start} {$i <= $stop} {incr i} { if {[llength $args]%2==0 && $args ne {}} { foreach item [my_mrange {*}$args] { lappend result [list $i {*}$item] } } else { lappend result $i } } if {$b < $a} { return [lreverse $result] } else { return $result } }