在Common Lisp中,如果我想检查列表是否为空,我可以简单地使用列表本身作为条件,因为所有非零列表都被认为是真的.但是,我发现在Scheme中,同样会让Scheme认为我正在尝试调用一个函数.有没有更好的方法来检查Scheme中的列表是否为null而不是定义另一个函数(not (null? x))呢?
erj*_*ang 10
在Scheme中,一切都不#f是真的,所以在陈述中都要'()考虑.#tif
从而,
(if '() "true" "false") => "true"
(not '()) => #f
Run Code Online (Sandbox Code Playgroud)
使用(not (null? x))是检查列表是否为空的最简单的方法:它准确描述了您想要的内容,而在您给出的内容不是列表的极端情况下,它会给您不同的行为:
(if (not (null? #t)) "true" "false") => "true"
(if (not #t) "true" "false") => "false"
Run Code Online (Sandbox Code Playgroud)