26 Nov
2010
26 Nov
'10
2:32 p.m.
From: Pascal Costanza <pc@p-cos.net> Date: Fri, 26 Nov 2010 14:36:57 +0100 (defmacro multiple-value-case (&body clauses) (when clauses (destructuring-bind (first &rest rest) clauses (cond ((member (first first) '(t otherwise)) (when clauses (warn "Dead code: ~S." clauses)) Surely: (when rest (warn "Dead code: ~S." rest)) -n `(progn ,@(rest first))) (t (destructuring-bind ((&rest lambda-list) expression (guard) &rest body) first `(multiple-value-bind ,lambda-list ,expression (if ,guard (progn ,@body) (multiple-value-case ,@rest)))))))))