Extended cond

cond has been extended with the extra test (?= pat expr) which tests if the result of expr matches pat. If so, it binds the variables in pat which can be used in the cond. An optional guard is allowed here.

An example:

(cond ((foo x) ...)
      ((?= (cons x xs) (when (is_atom x)) (bar y))
       (fubar xs (baz x)))
      ((?= (tuple 'ok x) (baz y))
       (zipit x))
      ... )