Scheme 有多少未定义的值?

How many undefined values do Scheme have?

我阅读了 https://ds26gte.github.io/tyscheme/index-Z-H-11.html tree.girth returns “an 未定义的值”。这是正确的吗? Scheme 真的乘以未定义的值吗?

"Undefined" 不是特定值。它的意思是值 returned 没有被语言规范定义,所以它可以是任何东西。

一些实现可能有一个特定的对象,它们在这些情况下 return 以帮助调试。但没有要求这样做。并且这些对象的不同实例是否彼此相等并没有指定——它不像 #false,它总是相同的对象。

Undefined 表示您不能使用 return 值——它可以是任何值。

scheme 中,像 display 这样的命令将 return #!unspecific 符号,在 racket(即旧的 plt-schemevoid 符号。您不应使用由 display 编辑的值 #!unspecific return。这意味着 undefined 值。

% mit-scheme
MIT/GNU Scheme running under GNU/Linux
Type `^C' (control-C) followed by `H' to obtain information about interrupts.

Copyright (C) 2019 Massachusetts Institute of Technology

1 ]=> (display (display "ok"))
ok#!unspecific
;Unspecified return value

% racket
Welcome to Racket v7.3.
>  (display (display "ok"))
ok#<void>
>