Lisp:如何编写具有多个条件的 if 语句?

Lisp: How to write an if statement with multiple conditions?

我了解如何编写带有个别条件的 if 语句。例如:

(if (> a 20))

然而,在网上搜索后,我没有找到任何资源来解释如何编写具有多个条件的 if 语句(例如,检查 a > 20a < 10)。如何在 Lisp 中编写具有多个条件的 if 语句?

使用 OR and/or AND 宏来组合条件。

(if (or (> a 20) (< a 10))
 ;; do something
)

if 特殊形式无论如何都是一样的:

(if test-expression 
    true-expression
    false-expression)

如果您希望在 a 高于 20 或低于 10 时发生某些事情,您只需执行以下操作:

(if (not (<= 10 a 20)) ; same as (or (> 20 a) (< 10 a))
    true-expression
    false-expression)

但我明白了。如果你有两个表达式,其中一个应该触发,那么你可以使用 or:

(if (or (> 20 a) (< 10 a))
    true-expression
    false-expression)

现在 andor 是下一个 ifs 的宏。例如。上面的表达式可以这样写:

(if (> 20 a)
    true-expression
    (if (< 10 a)
        true-expression
        false-expression)))

其中 true-expression 两个地方的表达式相同。