条件为假时,“何时”返回什么?

时间:2018-11-04 10:22:28

标签: scheme conditional evaluation guile

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,但这是什么?

1 个答案:

答案 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。