>>422
Nimではblock文/block式というのがあります。
nim-lang.org/docs/manual.html#statements-and-expressions-block-statement
nim-lang.org/docs/manual.html#statements-and-expressions-block-expression

変数aはblock:の下のインデントされたブロッグ内のスコープ内でのみ使えます。
block:
  let a = 1
  echo a

こんな感じでblockに名前を付けてbreak文を使っていっきにblockから抜けることもできます。
var found = false
block myblock:
  for i in 0..3:
    for j in 0..3:
      if a[j][i] == 7:
       found = true
       break myblock #forループの上にあるmyblockから抜ける。
echo found

block式を使うとblock文と同じように新しいスコープを作りますがblock内の最後の式がblock式の値になります。
let a = block:
  var fib = @[0, 1]
  for i in 0..10:
    fib.add fib[^1] + fib[^2]
  fib # fibの値がこのblock式の値になってaに代入される。
echo a # @[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144] が出力される