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-scheme)void
符号。您不应使用由 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>
>
我阅读了 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-scheme)void
符号。您不应使用由 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>
>