空间,但在这里和那里也有例外的“特”字,如划定系列。例如:
[a b c]
相同[ a b c ]
(a b c)
相同(a b c)
[a b c]def
相同[a b c] def
一些相当强大的工具,做语法元素的反思type?
,quote
和probe
。引用操作符可以防止解释器对事物给出行为。所以,如果你想是这样:
>> data: [x [y 10]]
>> type? data/x/y
>> probe data/x/y
代码的“活”性将通过路径挖掘,给你的价值10
的integer!
。但是如果你使用报价:
>> data: [x [y 10]]
>> type? quote data/x/y
>> probe quote data/x/y
然后你风与path!
,其值就是data/x/y
,它永远不会被评估。
在内部表示中,PATH!与BLOCK非常相似!或者PAREN !.它只是有这种特殊的独特的词汇类型,这使得它可以被区别对待。尽管你已经注意到它可以通过从一个对象或系列中选出成员来表现得像一个“点”,但这只是DO方言使用它的方式。你可以创造自己的想法,让我们说你做“罗素”命令:
russell [
x: 10
y: 20
z: 30
x/y/z
(
print x
print y
print z
)
]
试想一下,在我的奇特的例子,这个输出30
,10
,20
...因为什么罗素函数的作用是评估其以这种方式阻止路径被视为移位值的指令。所以x/y/z
表示x => y,y => z,并且z => x。然后括号中的任何代码都在DO方言中运行。分配正常处理。
如果您想为如何表达自己做一个有趣的新即兴表演,Rebol会处理很多烦琐的工作。因此,例如括号保证匹配达到paren!
。你不必自己去寻找所有的东西,你只需从所有这些不同类型的构建块中构建你的方言......并且与现有的行为挂钩(比如数学和一般计算等基础知识的DO方言,以及一些令人惊叹的模式匹配肌肉的弯曲PARSE方言)。
但是,“所有这些不同的类型”的讲话,还有却为斜线另一个怪人情况,可以创建另一个类型:
>> type? quote /foo
这就是所谓的refinement!
,以及发生在你开始词法元素用斜线。你会看到它在DO方言中使用,为可选参数集调用一个函数。但再一次,这只是另一个符号乐高在零件盒。你可以用你自己的方言来描述它的意思,这是完全不同的......
*“我真的很喜欢看到新的想法,甚至只是替代语法,REBOL肯定是充满了这些。”* - 在这里说真话。 :-)如果您仍然对这个主题感兴趣,请随时加入我们的[StackOverflow Rebol聊天室](http://chat.stackoverflow.com/rooms/291/),它已经以开源形式发布! – HostileFork 2013-01-25 18:17:19