所以我正在尝试自学lisp,我目前正在使用此网站作为参考:https://www.tutorialspoint.com/lisp/lisp_if_construct.htm
我不太明白为什么执行then子句,尽管if子句是假的?
(setq a 10)
(if (> a 20)
then (format t "~% a is less than 20"))
(format t "~% value of a is ~d " a)
输出结果为:
a is less than 20
value of a is 10
即使if语句为false,then子句是否总是执行? (在这种情况下是)。
任何帮助都将不胜感激,如果我的术语完全不正确,我也很抱歉,我还是Lisp的新手!
答案 0 :(得分:5)
根据the documentation,if有3个元素。 test-expression
例如(> a 10)
,then-expression
例如(- a 10)
和else-expression
例如。 a
:
(if (> a 10) ; if a is larger than 10
(- a 10) ; then return the value of a minus 10
a) ; else return the value of a
看看你的代码:
(if (> a 20) ; if a is larger than 20
then ; then return the value of "then"
(format t "~% a is less than 20")); else print a is less than 20 to screen
在这个例子中,他们提供了then子句作为单个变量then
。由于测试为假,因此始终打印else-expression。