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)
所以你通过了一个系列!类别类型,属于 PAREN!...在这种情况下,内部包含三个符号元素:1
, +
, 2
. 这在 Rebol 3 中不起作用:
>> non-evaluated (1 + 2)
3
这是一个错误还是一个有目的的设计决定?有解决方法吗?请注意,将引号运算符放在调用点不起作用,因为它quote
是被引用的符号词,然后是括号!自行评估以成为表达式的最终值:-/
>> non-evaluated quote (1 + 2)
quote
== 3