«синтаксис» #[]
на самом деле не является синтаксисом как таковым (не допустимый синтаксис, если вы попробуете его), только специальные случаи таких конструкций являются «допустимыми», как синтаксис #[unset!]
, синтаксис #[true]
, #[false]
синтаксис, #[none!]
синтаксис или #[datatype! unset!]
синтаксис.
Что еще более интересно, так это значение #[unset!]
.Это бывает значение, которое имеет каждая «неинициализированная» переменная в REBOL (не в функциях, хотя локальные переменные функции инициализируются в #[none!]
), а также результат таких выражений, как print 1
, do []
, ()
и т. Д.
Относительно «локальных переменных функции ... инициализированных #[none!]
», я должен добавить, что только переменные, следующие за «неиспользованным уточнением» (т. Е. Та, которая не используется в реальном вызове) инициализируются в #[none!]
вместе с уточняющей переменной.
Чтобы объяснить проблему далее, синтаксическая (диалект обмена данными) разница между true
и #[true]
состоит в том, что первое является словом,в то время как последнее является значением логики!тип.С семантической (до диалектной) точки зрения разница меньше, так как (глобальное) слово интерпретируется как переменная, которая ссылается на значение #[true]
.