Skip to main content

Gradual Refinement: Blending Pattern Matching with Data Abstraction

Meng Wang‚ Jeremy Gibbons‚ Kazutaka Matsuda and Zhenjiang Hu

Abstract

Pattern matching is advantageous for understanding and reasoning about function definitions, but it tends to tightly couple the interface and 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 abstract datatypes 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 (implemented as abstract datatypes), while maintaining simple and sound reasoning.

Book Title
Mathematics of Program Construction
Editor
Jules Desharnais
Note
See revised journal version "Refactoring Pattern Matching"
Series
LNCS
Volume
6120
Year
2010