为什么在Scheme中的if语句中将'0'视为真值?

use*_*901 3 scheme

据我所知,零是一个假值.那么为什么在下面的代码中将它视为True值,即为什么要返回?

scm> (if 0 'a 'b)
'a
Run Code Online (Sandbox Code Playgroud)

Ósc*_*pez 5

在方案的唯一错误值是#f(虽然有时false别名也用相同的值来定义),什么都被认为是真实的-其中包括:0,"",'(),等于是明确在这个表达式:

(if 0 'a 'b)
Run Code Online (Sandbox Code Playgroud)

该值0是真实的,因此整个表达式'a作为结果进行评估.