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.

Reply via email to