このような簡単なもの:
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>
. 私は何を間違っていますか?
それは言いLanguage: Lazy Scheme;
ます。これは、遅延して実行されるスキームの変種を使用していることを意味していると確信しています。つまり、結果が必要になるまで式を評価しません。スキームがこれを内部的に管理する方法は、スキームのpromise
メカニズムを使用することです。式の結果を返す代わりに、promise
後で結果を計算するための が返されます。force
この約束に対して呼び出すことで、結果を明示的に取得できるはずです。
ここにいくつかの参照があります:
非遅延スキームは、期待どおりに動作します。
HTH