scheme@(guile-user)> (define val (when #f 1))
scheme@(guile-user)> val
scheme@(guile-user)> (null? val)
$6 = #f
scheme@(guile-user)> (boolean? val)
$7 = #f
scheme@(guile-user)> (pair? val)
$8 = #f
scheme@(guile-user)> (when val 1)
$9 = 1
它的计算结果为#t
,但这是什么?
答案 0 :(得分:4)
更新:docs说:“当...的测试结果为#f
时,未指定表达式的值。” 因此它可能是任何东西,并且不应依赖任何内容。
它返回的值不是null?
,不是boolean?
也不是pair?
:
scheme@(guile-user)> (null? val)
$6 = #f
scheme@(guile-user)> (boolean? val)
$7 = #f
scheme@(guile-user)> (pair? val)
$8 = #f
这不是#f
,
scheme@(guile-user)> (when val 1)
$9 = 1
它打印为空,
scheme@(guile-user)> val
scheme@(guile-user)>
那是什么? 值是由其相互作用定义的。在特定实现中其内部表示并不那么重要。
简短的回答是,它是“不是值”。 (原文如此)
Chez计划prints it as #<void>
:
(define val (when #f 1))
(display val)
; Output:
#<void>
和ideone.com prints it as #<unspecified>
上的Guile 2.0.13。