【发布时间】:2014-12-24 20:17:39
【问题描述】:
在下面的代码中,我们可以通过一个SET-WORD将GET-WORD的结果赋值给p,然后在新名称下使用:
p: :print
p [{Hello} {World}]
但是,如果您在使用 COMPOSE 时遇到了这样的情况怎么办?
do compose [p: (:print)]
p [{Hello} {World}]
这给出了一个错误:
*** ERROR
** Script error: -unnamed- is missing its value argument
** Where: do
** Near: do compose [p: (:print)] p ["Hello" "World"]
因此,当在解释器中看到时,就像块中的函数值是“活的”......无论它们是否作为评估结果被提取。 (看起来它们应该是惰性的,除非以某种方式获取或应用,否则在 COMPOSE 或类似内容中不可能进行此类分配。)
看来你必须引用一个get-word,例如:
do compose [p: (quote :print)]
p [{Hello} {World}]
这可以使 p 成为打印功能。但是你可以不通过 GET-WORD 或类似的代理来做到这一点吗?
【问题讨论】: