Lisp中的复合条件句

Lisp中的复合条件句,lisp,conditional,Lisp,Conditional,我是lisp新手,我只是尝试在条件返回true时同时调用两个函数 (cond ((equals (first expression) "+") (function1 parameter) (function2 parameter))) 在上面的代码中,我只希望调用function1和function2。有什么想法吗?是的,像这样进行: (cond ((equals (first expression) "+") (progn (function1 par

我是lisp新手,我只是尝试在条件返回true时同时调用两个函数

(cond 
  ((equals (first expression) "+")
   (function1 parameter)
   (function2 parameter)))
在上面的代码中,我只希望调用function1和function2。有什么想法吗?

是的,像这样进行:

(cond 
  ((equals (first expression) "+")
   (progn
     (function1 paramter)
     (function2 parameter))))
cond
采用一个表达式计算是否为真。在这个用法中,
progn
(及其参数)是一个表达式
progn
,随后获取n个表达式并对其求值。

Common Lisp

  • EQUALS不存在,EQUAL存在

  • 康德已经做了你想做的

COND允许在测试后进行多次调用:

(cond ((equal (first expression) "+")
       (do-something ...)
       (do-something-more ...)))
  • 它被称为Lisp,而不是Lisp

  • 读一本

  • 使用


但是…
cond
在每个分支中提供了一个隐式的
progn
,因此这里使用
progn
是多余的。我说的是通用口齿不清。谁知道口齿不清的其他方言呢-p COND表达式的主体包装在隐式PROGN中,因此无需显式提供。