2009-10-14 55 views
1

我是新來的lisp,如果條件返回true,我只是試圖一次調用兩個函數。Lisp中的複合條件

(cond 
    ((equals (first expression) "+") 
    (function1 parameter) 
    (function2 parameter))) 

在上面的代碼中,我只想調用function1和function2。有什麼想法嗎?

回答

-1

是,progn這個是這樣的:

(cond 
    ((equals (first expression) "+") 
    (progn 
    (function1 paramter) 
    (function2 parameter)))) 

cond需要一個表達式,如果真來評價。在這個使用progn(與它的論點)是一個表達式。 progn,隨後取n個表達式並對它們進行評估。

+3

但但但...'cond'在每一個提供了一種隱含'progn'分支,所以這裏使用'progn'是多餘的。好吧,無論如何,我都在談論Common Lisp。誰知道Lisp的其他方言。 :-P – 2009-10-14 02:16:22

+0

COND表達式的主體被封裝在一個隱含的PROGN中,所以不需要明確提供一個。 – Vatine 2009-11-24 12:54:45

4

Common Lisp的

  • EQUALS不存在,平等確實

  • COND已經這樣做了,你想要什麼

COND允許測試經過多次電話:

(cond ((equal (first expression) "+") 
     (do-something ...) 
     (do-something-more ...)))