空間,但在這裏和那裏也有例外的「特」字,如劃定系列。例如:
[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