【发布时间】:2014-12-24 05:19:57
【问题描述】:
当DO 后跟一个函数时,会执行该函数,并且根据给定函数的数量将剩余的值作为参数使用,例如,
do :multiply 3 4
multiply 3 4
这两个语句的效果相同。但我认为DO + 函数受到 REBOL 解释器的特殊处理,因为我不相信在纯 REBOL 中实现你自己的DO (使用完全相同的语法)是可能的,例如,
perform: func [f [any-function!]] [
; What goes here?
]
这是正确的吗?
澄清
我不是询问DO 方言。这不是一个“初学者”的问题。我非常非常了解 REBOL 的一般语法:Bindology(我在上面写的一篇旧博文)、它的同音性的含义、单词的各种风格等等。 (例如,here 是我在 REBOL 中对 Logo 的 cascade 的实现。虽然我在这样做,但为什么不将我的 Vim syntax plug-in 插入 REBOL。)
我在问一些更微妙的问题。我不确定如何比我已经更清楚地表达它,所以我会请你更仔细地阅读我原来的问题。我想实现一个功能,像DO,具有以下能力:
do :multiply 3 4
double: func [n] [n * 2]
do :double 5
请注意语法do :double 或do :multiply 如何在其后使用适当数量的REBOL 值。 这是理解我在问什么的关键。据我所知,编写自己的 REBOL 函数是不可能的,可以DO this。
如果您可以用纯 REBOL 编写自己的函数,该函数可以替代上述示例中的 DO(无需方言、块或任何其他修改),您就已经回答了这个问题,或者解释其原因做不到。
【问题讨论】:
-
Brett 对 set-words、get-words 和 lit-words 有很好的描述,这里有很好的例子codeconscious.com/rebol/articles/rebol-concepts.html
-
请注意我迫切希望不要被误认为是初学者。我需要治疗师。 :)
标签: rebol