18.12.08

An ingenious set of combinators for expressing pattern matching in a type-safe way. No ADTs required. Opens up the possibility of programming languages where we can declare new binding forms just as we declare new functions. Revolutionary, but may have been hard to publish before Programming Pearls were created---it shows why they are a good idea.

How does this approach relate to Tullsen's First-Class Patterns? From my brief skim, it would seem this paper relies on continuation-passing style for a full encoding of pattern matching, whereas Tullsen's patterns rely on a monadic encoding. There is a deep connection between the CPS and monads, so I suppose that shouldn't be surprising.