1

当您使用 REDUCE 时,您基本上是在 DO 方言中操作,其中 PAREN! 组可用于项目的优先级:

>> reduce ["Hello" (3 + 4) * 5]
== ["Hello" 35]

在 COMPOSE 方言中,PAREN!用于标出您要使用 DO 方言评估块的哪些部分,不理会其余部分:

>> compose ["Hello" (3 + 4) * 5]
== ["Hello" 7 * 5]

但是,如果你想运行 reduce 或 compose 并有一些你想留下的东西作为文字括号,除了to-paren一个块之外,还有其他的习惯用法吗?

>> reduce ["Hello" (3 + 4) * 5 to-paren ["inside!"]]
== ["Hello" 35 ("inside")]

旁注:我想知道 LIT-PAREN 会导致什么样的疯狂?

>> reduce ["Hello" (3 + 4) * 5 '("inside!")]
== ["Hello" 35 ("inside")]

……话说回来,我不知道我想考虑一下。:-)

4

2 回答 2

3

实现您想要的更一般的方法是依靠quote

>> reduce ["Hello " (3 + 4) * 5 quote ("inside!")]
== ["Hello " 35 ("inside!")]

自 2.7.7 起,QUOTE 在 R3 和 R2 中可用。

于 2013-01-13T23:33:24.157 回答
2

另一个成语,是的:

>> reduce ["Hello" (3 + 4) * 5 first [("inside!")]]
== ["Hello" 35 ("inside")]

不确定它是否更好,但它是一种动物。

于 2013-01-13T19:40:11.600 回答