fn w_semi(v: ~[int]) -> int { // the semicolon causes compiler not to // complain about the ignored return value: do vec::foldl(0, v) {|x,y| x+y}; -10 } fn w_paren1(v: ~[int]) -> int { (do vec::foldl(0, v) {|x,y| x+y}) - 10 } fn w_paren2(v: ~[int]) -> int { (do vec::foldl(0, v) {|x,y| x+y} - 10) } fn w_ret(v: ~[int]) -> int { ret do vec::foldl(0, v) {|x,y| x+y} - 10; } fn main() { assert w_semi(~[0, 1, 2, 3]) == -10; assert w_paren1(~[0, 1, 2, 3]) == -4; assert w_paren2(~[0, 1, 2, 3]) == -4; assert w_ret(~[0, 1, 2, 3]) == -4; }