如果声明带有then子句(LISP)

时间:2017-05-30 22:21:07

标签: if-statement lisp

所以我正在尝试自学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的新手!

1 个答案:

答案 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。