Quoted 値引数として渡した式は通常、呼出の前に評価をして、その評価結果を関数に渡します。しかし、引数宣言のシンボル名の先頭にバッククオートをつけると、未評価の式 (Quoted 値) を値として渡すことができます。 以下は、quoted value を使って、C の for ステートメントのような動作をする関数を作成している例です。
c_like_for(`init, `cond, `next) {`block} = {
env = outers()
env.eval(init)
while (env.eval(cond)) {
env.eval(block)
env.eval(next)
}
}
n = 0
c_like_for (i = 1, i <= 10, i += 1) {
n += i
}
printf('i = %d, sum = %d\n', i, n)
|