字面词的类型

时间:2015-04-25 00:59:13

标签: rebol red

我正在阅读Bindology并试了一下:

>> type? first ['x]
== lit-word!
>> type? 'x
== word!

我希望type? 'x也返回lit-word!。欣赏任何见解。

1 个答案:

答案 0 :(得分:4)

LIT-WORD!如果在“实时”上下文中看到评估者解析为单词本身。当你想传递一个WORD时,它可以用来简单地用一个令牌来抑制评估!函数的值。 (当然,当你扮演“评估者”角色时,你自己的方言中,它是一个修补匠玩具,你可以让它意味着你想要的任何东西。)

你想得到一个真正的LIT-WORD!你必须以某种方式压制评估者把它变成一个字!您注意到可以通过从未评估的块中选择它来实现,例如使用first ['x]。但更“正确”的方法是使用quote 'x

>> type? quote 'x
== lit-word!

要注意一个被称为“lit-word decay”的奇怪错误:

>> x-lit: quote 'x
>> type? x-lit
== word!

那已经是corrected in Red,正在等待Rebol的更正。在那之前你必须使用GET-WORD!从包含它的变量中提取一个单词值:

>> x-lit: quote 'x
>> type? :x-lit
== lit-word!

(您可能已经遇到过这种做法,即通过评估器获取单词的值与“运行”它的方式...就像您想要处理函数的值而不是调用它一样对于持有点燃词的价值,这不应该是必要的!历史事故,似乎。)