ACM SIGPLAN Notices
Object-oriented languages (Computer program languages), Object-oriented methods (Computer science)--Software, Programming languages (Electronic computers)--Software
Object orientation and pattern matching are often seen as conflicting approaches to program design. Object oriented programs place type-dependent behaviour inside objects and invoke it via dynamic dispatch, while pattern matching programs place type-dependent behaviour outside data structures and invoke it via multiway conditionals (case statements). Grace is a new, dynamic, object-oriented language designed to support teaching: to this end, Grace needs to support both styles. In this paper we explain how this conflict can be resolved gracefully: by modelling patterns and cases as partial functions, reifying those functions as first-class objects, and then building up complex patterns from simpler ones using pattern combinators. We describe our design for pattern matching in Grace, and its implementation as an object-oriented framework.
Homer, Michael, et al. "Patterns as objects in Grace." ACM SIGPLAN Notices. Vol. 48. No. 2. ACM, 2012.