Compound Conditional in Lisp

I'm new to lisp and I am simply trying to have two functions called at once if a conditional returns true.

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

In the above code, I just want function1 and function2 to be called. Any thoughts?

14.10.2009 01:06:51
2 ОТВЕТА

Yes, progn like this:

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

cond takes one expression to evaluate if true. In this use progn (with its arguments) is that one expression. progn, subsequently take n expressions and evaluates them.

-1
14.10.2009 09:45:38
But but but...cond provides an implicit progn in every branch, so the use of progn here is superfluous. Well, I'm talking about Common Lisp, anyway. Who knows about other dialects of Lisp. :-P
Chris Jester-Young 14.10.2009 02:16:22
The body of a COND expression is wrapped in an implicit PROGN, so there is no need to explicitly provide one.
Vatine 24.11.2009 12:54:45

Common Lisp

  • EQUALS does not exist, EQUAL does

  • COND already does what you want

COND allows several calls after the test:

(cond ((equal (first expression) "+")
       (do-something ...)
       (do-something-more ...)))
4
14.10.2009 07:01:21