Posted to tcl by colin at Sat Jan 12 05:40:38 GMT 2013view pretty

% proc nest {body args} {if {![llength $args]} {return $body}; set args [lassign $args var vals]; return [list foreach $var $vals [nest $body {*}$args]];}
% {*}[nest {puts "$a $b"} a {1 2 3} b {4 5 6}]
1 4
1 5
1 6
2 4
2 5
2 6
3 4
3 5
3 6