@inproceedings{PatternsObjects-Homer2012,
    title = {Patterns as Objects in Grace},
    booktitle = {Dynamic Language Symposium},
    year = 2012,
    doi = "10.1145/2480360.2384581",
    url = "https://michael.homer.nz/Publications/DLS2012/PatternsObjects-Homer2012.pdf",
    author = {Homer, Michael and Noble, James and Bruce, Kim B. and Black, Andrew P. and Pearce, David J.},
    abstract = {
        Object orientation and pattern matching are often seen as conflicting
        approaches to program design. Object-oriented programs place
        type-dependent behavior inside objects and invoke it via dynamic
        dispatch, while pattern-matching programs place type-dependent behavior
        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. We explain how this conflict can be resolved grace- fully: by
        modelling patterns and cases as partial functions, reifying those
        functions as objects, and then building up complex patterns from
        simpler ones using pattern combinators.  We describe the implementation
        of this design as an object-oriented framework, and a case study of its
        effectiveness.
    }
}
