DO弁はカテゴリPARENのシリーズを使用!優先順位のために、通常、関数を呼び出す前に、基礎となる括弧構造を沸騰させます。
ただし、Rebol 2 では、関数の定義で、コールサイトでの括弧の評価を抑制するように指定することが可能でした。これは、パラメーターに「リテラル ワード」アポストロフィ マークを使用して行いました。
evaluated: func [param] [probe param]
non-evaluated: func ['param] [probe param]
>> evaluated (1 + 2)
3
>> non-evaluated (1 + 2)
(1 + 2)
だからあなたはSERIESを渡されます!クラス PAREN! のカテゴリ タイプ...この場合、内部に 3 つの記号要素があります: 1
、+
、2
. これはRebol 3では機能しません:
>> non-evaluated (1 + 2)
3
これはバグですか、それとも意図的な設計上の決定ですか? 回避策はありますか? クォート演算子をコールサイトに配置しても機能しないことに注意してください。これは、クォートされるのはシンボリック ワードquote
であり、その後に括弧が続くためです。単独で評価され、式の最終値になります:-/
>> non-evaluated quote (1 + 2)
quote
== 3