无法检查布尔值是否为真?

Unable to check whether a boolean is true?

我正在尝试使用以下代码检查布尔变量 (boolVariable) 是否为真 (T):

(defvar boolVariable T)

(if (= boolVariable T)
    (print 'TRUE)
)

但是,我收到以下错误:

  • =: T is not a number

这似乎很奇怪,考虑到我认为您可以检查 Lisp 中的变量是否等于布尔值?

Common Lisp 的 = 只比较数字,tboolVariable 都不是数字。

还有一些其他的相等谓词,如 eq, eql, equal or equalp,但在这种情况下,您可以只使用 bool-variable 的值(在 kebab-case 中重命名):

(defvar bool-variable t)
(if bool-variable (print 'TRUE))

If with only then-form can be also replaced with when:

(defvar bool-variable t)
(when bool-variable (print 'TRUE))