为什么“让”不评估,而只是给我#<promise> </promise>

时间:2010-01-19 23:49:26

标签: scheme racket

这样简单:

Welcome to DrScheme, version 4.2.3 [3m].
Language: Lazy Scheme; memory limit: 128 megabytes.

> (let ((x 2) (y 10))
   (+ x y))

#<promise>

> 

我按下输入以获取let表达式,它会给我#<promise>。我做错了什么?

1 个答案:

答案 0 :(得分:4)

它说Language: Lazy Scheme;。我确信这意味着你正在使用一种懒惰运行的方案变体 - 在结果需要之前它不会计算表达式。方案将在内部管理此方法将使用方案的promise机制 - 而不是返回表达式的结果,而是返回promise来计算结果。您应该能够通过针对此承诺调用force来明确获得结果。

以下是一些参考资料:

非惰性方案将以您期望的方式运作。

HTH