block と return

for 文の do 以下には一つの命令しか書けないような気がします。 ここで登場するのがblock. (もちろん block はよそでも使えます。)
block(式1, 式2, 式3, ...,最後の式);
という一文を書くことで、式1,式2 を順に値を求める(実行させる)ことができます。 返り値は最後の式の値です。

local な変数(block 文の中だけで通用する変数)を使うこともできます。

block([変数1,変数2,...],式1, 式2, 式3, ...,最後の式);
という具合です。

block 文の途中で終了したい場合は、return を使うといいようです。 block 文の返り値は return文の中の値になります。