Refactoring pattern matching

Meng Wang,Jeremy Gibbons,Kazutaka Matsuda,Zhenjiang Hu
DOI: https://doi.org/10.1016/j.scico.2012.07.014
IF: 1.039
2013-01-01
Science of Computer Programming
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.
What problem does this paper attempt to address?