是否可以引用函数调用的结果?
例如
(quoteresult (+ 1 1)) => '2
答案 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?。