为什么“让”是“让”?不评估,只是给我#
事情就这么简单:
Welcome to DrScheme, version 4.2.3 [3m].
Language: Lazy Scheme; memory limit: 128 megabytes.
> (let ((x 2) (y 10))
(+ x y))
#<promise>
>
我按 Enter 键输入 let 表达式,它会给出 #
。我做错了什么?
Something simple as this:
Welcome to DrScheme, version 4.2.3 [3m].
Language: Lazy Scheme; memory limit: 128 megabytes.
> (let ((x 2) (y 10))
(+ x y))
#<promise>
>
I press enter for the let expression, and it gives me the #<promise>
. What am I doing wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
它说
语言:惰性方案;
。我确信这意味着您正在使用延迟运行的方案变体 - 即它在需要结果之前不会评估表达式。方案在内部管理此问题的方式是使用方案的承诺机制 - 不是返回表达式的结果,而是返回稍后计算结果的承诺。您应该能够通过针对此承诺调用force
来显式获取结果。这里有几个参考:
force 上的方案 r5rs 和<代码>延迟。
非惰性方案将按照您期望的方式运行。
华泰
It says
Language: Lazy Scheme;
. I'm sure this means that you're using a variant of scheme that runs lazily - i.e. it doesn't evaluate an expression until the result is required. The way scheme will manage this internally will be by using scheme'spromise
mechanism - instead of returning the result of an expression, apromise
to calculate the result later is returned. You should be able to get the result explicitly by callingforce
against this promise.Here are a couple of references:
force
anddelay
.A non-lazy scheme will behave in the way you expect.
HTH