University of Oxford Logo University of OxfordDepartment of Computer Science - Home

Refactoring Pattern Matching

Meng Wang‚ Jeremy Gibbons‚ Kazutaka Matsuda and Zhenjiang Hu

Abstract

Defining functions by pattern matching over the arguments is advantageous for understanding and reasoning, but it tends to expose the implementation of a datatype. Significant effort has been invested in tackling this loss of modularity; however, decoupling patterns from concrete representations while maintaining soundness of reasoning has been a challenge. Inspired by the development of invertible programming, we propose an approach to program refactoring based on a right-invertible language RINV - every function has a right (or pre-) inverse. We show how this new design is able to permit a smooth incremental transition from programs with algebraic datatypes and pattern matching, to ones with proper encapsulation, while maintaining simple and sound reasoning.

Details

Journal

Science of Computer Programming

Month

January

Note

Revised version of the MPC2010 paper "Gradual Refinement"

Year

2012

Links

BibTeX

Link (pdf)

EarlierĀ conferenceĀ version

Related pages

People

Projects

Activities

Themes