В Схеме все, что не #f
, является правдивым, поэтому '()
считается #t
в if
утверждениях.
Таким образом,
(if '() "true" "false") => "true"
(not '()) => #f
Использование (not (null? x))
это самый простой способ проверить, не является ли список ненулевым: он точно описывает, что вы хотите, и в угловых случаях, когда вам дается что-то, что не является списком, он даст вам другое поведение:
(if (not (null? #t)) "true" "false") => "true"
(if (not #t) "true" "false") => "false"