the following two ways (but almost same code) that use block for assignment have different effect: proc what_i_expected() = let x, y = block: var z = 1 inc z z assert x == 2 and y == 2 what_i_expected() let x, y = block: var z = 1 inc z z assert x == 2 assert y == 3 Run
can anyone explain why `y` changes? i also noticed `x, y =` will evaluate block twice that is quite error-prone for beginner like me.