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;ます。これは、遅延して実行されるスキームの変種を使用していることを意味していると確信しています。つまり、結果が必要になるまで式を評価しません。スキームがこれを内部的に管理する方法は、スキームのpromiseメカニズムを使用することです。式の結果を返す代わりに、promise後で結果を計算するための が返されます。forceこの約束に対して呼び出すことで、結果を明示的に取得できるはずです。

ここにいくつかの参照があります:

非遅延スキームは、期待どおりに動作します。

HTH

于 2010-01-20T00:11:27.933 に答える