Average rating:
proc do {code while condition} {
upeval $code
while { upeval $condition } {
upeval $code
}
}
set x 100
set foo ""
do {
append $foo $x
incr $x
} while {< $x 10}
set foo
# Returns 100 - because the loop is run once and only once.