我正在阅读Bindology并试了一下:
>> type? first ['x]
== lit-word!
>> type? 'x
== word!
我希望type? 'x
也返回lit-word!
。欣赏任何见解。
答案 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!
(您可能已经遇到过这种做法,即通过评估器获取单词的值与“运行”它的方式...就像您想要处理函数的值而不是调用它一样对于持有点燃词的价值,这不应该是必要的!历史事故,似乎。)