2009-10-14 10 views
1

Je suis nouveau à lisp et j'essaie simplement d'avoir deux fonctions appelées à la fois si un conditionnel retourne true.Composé conditionnel en Lisp

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

Dans le code ci-dessus, je veux juste appeler function1 et function2. Des pensées?

Répondre

-1

Oui, PROGN comme ceci:

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

cond prend une expression pour évaluer si elle est vraie. Dans cette utilisation progn (avec ses arguments) est cette expression. progn, prenez ensuite n expressions et les évalue.

+3

Mais, mais, mais ... 'cond' fournit une implicite' progn' dans tous les branche, donc l'utilisation de 'progn' est superflue. Eh bien, je parle de Common Lisp, de toute façon. Qui sait d'autres dialectes de Lisp. :-P –

+0

Le corps d'une expression COND est enveloppé dans un PROGN implicite, il n'est donc pas nécessaire d'en fournir explicitement un. – Vatine

4

Common Lisp

  • EQUALS n'existe pas, EQUAL ne

  • COND fait déjà ce que vous voulez

COND permet plusieurs appels après le test:

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