Refactoring pattern matching

Wang, Meng and Gibbons, Jeremy and Matsuda, Kazutaka and Hu, Zhenjiang (2013) Refactoring pattern matching. Science of Computer Programming, 78 (11). pp. 2216-2242. ISSN 0167-6423. (doi: (Full text available)

PDF - Author's Accepted Manuscript
Download (389kB) Preview
Official URL


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.

Item Type: Article
Uncontrolled keywords: Functional programming; Refactoring; Pattern matching; Invertible programming; Abstract datatypes; Fusion
Subjects: Q Science > QA Mathematics (inc Computing science) > QA 75 Electronic computers. Computer science
Q Science > QA Mathematics (inc Computing science) > QA 76 Software, computer programming,
Divisions: Faculties > Sciences > School of Computing > Programming Languages and Systems Group
Depositing User: Meng Wang
Date Deposited: 01 Mar 2015 00:18 UTC
Last Modified: 27 Jun 2017 02:58 UTC
Resource URI: (The current URI for this page, for reference purposes)
  • Depositors only (login required):


Downloads per month over past year