如何阅读LISP表达式?关于cond中(= a 4 ) 6的疑问
解析你给出的LISP
cond表达式 cond是LISP里的核心条件分支结构,每个子句遵循(判断条件 结果表达式)的格式:依次检查每个子句的条件,条件为真时执行对应的结果表达式并返回其值,后续子句不再处理。
你困惑的((= a 4 ) 6 )子句详解
(= a 4)是判断谓词:调用数值相等判断函数=,验证变量a的数值是否等于4。LISP中=仅用于数值比较,成立返回t(真),不成立返回nil(假)6是结果表达式:当(= a 4)为真时,直接返回常量6——这是最基础的结果形式,不需要额外计算
完整表达式的执行逻辑
(cond ((= a 4 ) 6 ) ((= b 4 ) ( + 6 7 a )) (else 25) )
逐个分支的执行规则:
- 先检查
a是否等于4:是则返回6,结束判断 - 若
a≠4,检查b是否等于4:是则计算(+ 6 7 a)(即6+7+a的和)并返回结果 - 若前两个条件都不满足,
else分支触发,返回25
举几个实际运行的例子:
- 当
a=4时,返回6 - 当
a=2且b=4时,返回6+7+2=15 - 当
a=5且b=3时,返回25
内容的提问来源于stack exchange,提问作者Raja G
相关产品推荐
相关产品推荐

