所以我试着自学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子句是否总是执行(在本例中是)。
任何帮助都将不胜感激,也很抱歉,如果我的术语是完全错误的,我仍然是新的口齿不清!

最佳答案

根据the documentation一个if有3个元素test-expressioneg(> a 10),athen-expressioneg(- a 10)和anelse-expressionega

(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提供由于测试为false,因此始终打印else表达式。

关于if-statement - 如果带有then子句的语句(LISP),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44272834/

10-16 00:58