Lisp 方案:关于cond

Lisp 方案:关于cond,lisp,scheme,Lisp,Scheme,(cond((test-1)(expression-1)) 当我使用cond时,我能给出(表达式-1)中的几个函数吗 像这样: (cond(=11)((fun1)(fun2))是的,您可以通过将多个表达式包装在一个begin中来执行它们,如下所示 (cond ((= 1 1) (begin (fun1) (fun2))) 注意:begin表达式的返回值将是最后一个表达式的结果,即在示例中,返回值将是fun2执行,begin实际上是可选的--cond(至少在Scheme和Emacs Li

(cond((test-1)(expression-1))


当我使用cond时,我能给出(表达式-1)中的几个函数吗

像这样:


(cond(=11)((fun1)(fun2))

是的,您可以通过将多个表达式包装在一个
begin
中来执行它们,如下所示

(cond ((= 1 1) (begin (fun1) (fun2))) 

注意:begin表达式的返回值将是最后一个表达式的结果,即在示例中,返回值将是fun2执行

begin
实际上是可选的--
cond
(至少在Scheme和Emacs Lisp中)在每个测试表达式之后获取多个表达式,并在隐式
begin

(cond ((= 1 1) (fun1 ...) (fun2 ...))
      (t (something-else)))

使用
#t
而不是
t
作为Scheme

作为
cond
你甚至不需要在结果中使用
begin
(但是,如果
,你必须使用它)。这就足够了:
(cond(=1)(fun1)(fun2))
有一个隐式的
progn
(与
begin
等效)在Common Lisp中的每个
cond
子句中也是如此。我认为Clojure是不同的,因为它没有额外的paren对来包装每个子句。