1

像这样简单的东西:

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

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

#<promise>

> 

我为 let 表达式按 Enter 键,它给了我#<promise>. 我究竟做错了什么?

4

1 回答 1

4

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

这里有几个参考:

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

高温高压

于 2010-01-20T00:11:27.933 回答