计划“承诺?” Racket 博士,geiser
scheme `promise?` Dr Racket, geiser
Welcome to DrRacket, version 6.0 [3m].
Language: racket; memory limit: 128 MB.
> promise?
#<procedure:promise?>
> (promise? (delay (+ 1 2)))
#t
我需要使用 R5RS 并且正在处理延迟评估...这里在 emacs 中使用 geiser:
racket@> (require r5rs)
racket@> (cons 1 '())
(mcons 1 '()) ;; this is how racket represents a r5rs cons
racket@> (define x (delay (+ 1 2)))
racket@> x
#<promise>
racket@> (promise? x)
#f ;; what is going on here???
racket@> promise?
#<procedure:promise?>
当然上面的代码 (promise? x)
应该 return #t
...
我注意到当我在 DrRacket (gui) 中切换到 R5rS 时,出现以下错误。有人可以解释发生了什么吗?我认为 promise?
是为 R5RS
定义的。还是我记错了?
Welcome to DrRacket, version 6.0 [3m].
Language: R5RS; memory limit: 128 MB.
> promise?
. . promise?: undefined;
cannot reference undefined identifier
>
R5RS中没有promise?
。构造 delay
产生一个表示承诺的值,但由实现者决定如何表示承诺。一些实现选择将它们表示为闭包。 Racket 中的 R5RS 实现选择使用名称为 promise?
的结构。这就是为什么您看到 promise 值打印为 #<promise>
.
我怀疑 R6RS 也有类似的情况。
Welcome to DrRacket, version 6.0 [3m].
Language: racket; memory limit: 128 MB.
> promise?
#<procedure:promise?>
> (promise? (delay (+ 1 2)))
#t
我需要使用 R5RS 并且正在处理延迟评估...这里在 emacs 中使用 geiser:
racket@> (require r5rs)
racket@> (cons 1 '())
(mcons 1 '()) ;; this is how racket represents a r5rs cons
racket@> (define x (delay (+ 1 2)))
racket@> x
#<promise>
racket@> (promise? x)
#f ;; what is going on here???
racket@> promise?
#<procedure:promise?>
当然上面的代码 (promise? x)
应该 return #t
...
我注意到当我在 DrRacket (gui) 中切换到 R5rS 时,出现以下错误。有人可以解释发生了什么吗?我认为 promise?
是为 R5RS
定义的。还是我记错了?
Welcome to DrRacket, version 6.0 [3m].
Language: R5RS; memory limit: 128 MB.
> promise?
. . promise?: undefined;
cannot reference undefined identifier
>
R5RS中没有promise?
。构造 delay
产生一个表示承诺的值,但由实现者决定如何表示承诺。一些实现选择将它们表示为闭包。 Racket 中的 R5RS 实现选择使用名称为 promise?
的结构。这就是为什么您看到 promise 值打印为 #<promise>
.
我怀疑 R6RS 也有类似的情况。