## if `do` is not enclosed in `( )`, variable declaration is prohibited do { | k | set k 10 }; do | k | {set k 10;}; ##ERROR: syntax error - variable declaration disallowed --- ## if `do` is not enclosed in `( )`, it supports only the limited number of expressions. do ; ## this is ok do 1; ## this is ok do { set k 10; printf "k=%d\n" k; } { set k 20; printf "k=%d\n" k; }; ##ERROR: syntax error - more than one expression after do