Почему «пусть» не оценивает, а просто дает мне # <promise> - PullRequest
1 голос
/ 20 января 2010

Что-то простое, как это:

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 Ответ

4 голосов
/ 20 января 2010

Там написано Language: Lazy Scheme;.Я уверен, что это означает, что вы используете вариант схемы, которая выполняется лениво - , т.е. , она не оценивает выражение, пока не потребуется результат.Схема будет управлять этим внутренне, используя механизм promise схемы - вместо того, чтобы возвращать результат выражения, возвращается promise для вычисления результата позже.Вы должны быть в состоянии получить результат явно, вызвав force против этого обещания.

Вот несколько ссылок:

Не ленивая схема будет вести себя так, как вы ожидаете.

HTH

...