Почему Rebol 3 не учитывает параметры функции в кавычках, которые заключены в скобки?
Диалект 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