Pattern matching for EX

This really shouldn't be so difficult: from the data structures, it
would be a generation of a couple of CPP macros that setup a lexical
environment. It would require some trickery with curly braces though.
MATCH(v)
CASE(pair, a, d) { }
CASE(NIL) { }
ELSE { }
END_MATCH
where MATCH sets up the first '{' and each CASE starts with a '}'.