Posted to tcl by mjanssen at Mon Sep 16 07:46:07 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
    }
}