方案:如何引用函数调用的结果?

时间:2017-03-11 21:24:59

标签: scheme racket quote

是否可以引用函数调用的结果?

例如

(quoteresult (+ 1 1)) => '2

1 个答案:

答案 0 :(得分:2)

乍一看,你的问题没有任何意义。 “引用”是可以在一段源代码中对基准执行的事情。 “引用”运行时值充其量只是无操作,最糟糕的是无意义。

您问题中的示例说明了为什么它没有任何意义。您所谓的quoteresult表单会评估(+ 1 1)以生成'2,但'2评估为2(+ 1 1)评估的内容相同。 quoteresult的结果与普通评估有何不同?

但是,如果您想要实际生成一个quote 表达式以便使用动态评估(通常的免责声明为that is probably a bad idea),那么您只需要生成两个元素的列表:符号quote和函数的结果。如果是这种情况,您可以非常简单地实施quoteresult

(define (quoteresult x)
  (list 'quote x))

然而,这对大多数程序的用处有限。

有关引用的内容及其工作原理的详细信息,请参阅What is the difference between quote and list?