Skip to content

Instantly share code, notes, and snippets.

@kurohuku
Created September 7, 2010 15:10
Show Gist options
  • Save kurohuku/568504 to your computer and use it in GitHub Desktop.
Save kurohuku/568504 to your computer and use it in GitHub Desktop.
(defmacro switch (val &body clauses)
(let ((syms (loop :repeat (length clauses)
:collect (gensym))))
`(tagbody
(case ,val
,@(mapcar
#'(lambda (clause sym)
`(,(car clause) (go ,sym)))
clauses
syms))
,@(mapcan
#'(lambda (clause sym)
`(,sym ,@(cdr clause)))
clauses
syms)
break)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment