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

joe*_*irt -1 lisp if-statement

所以我正在尝试自学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)
Run Code Online (Sandbox Code Playgroud)

输出是:

a is less than 20
value of a is 10 
Run Code Online (Sandbox Code Playgroud)

即使if语句为false,then子句是否总是执行?(在这种情况下是).

任何帮助将不胜感激,也很抱歉,如果我的术语完全不正确我仍然是Lisp的新手!

Syl*_*ter 5

根据文档,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
Run Code Online (Sandbox Code Playgroud)

看看你的代码:

(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
Run Code Online (Sandbox Code Playgroud)

在这个例子中,他们提供了then子句作为单个变量then.由于测试为假,因此始终打印else-expression.