オブジェクトの一部だけを評価したものを得るために使用するオブジェクトです。 `value のように記述します。 評価すると、スロット value にセットされたオブジェクトの中から、 再帰的にアンクオートされたオブジェクトを探しだし、 その部分を評価したオブジェクトを返します。
準クオートは、コードの生成において使用すると便利です。下に例を挙げます。
# 準クオートされたブロック内で ?*list とすると、list がスプライシングされます。
cond = '(x == 0)
then = '[say("x == 0")]
else = '[say("x != 0"), false]
code = `if(?cond){ ?*then; true }else{ ?*else }
say(code)
#=> if(x.(==)(0), { say("x == 0"); true }, :else { say("x != 0"); false })
|