Refactoring Pattern Matching
Artikel i vetenskaplig tidskrift, 2013

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.

abstract datatypes

functional programming

pattern matching

fusion

invertible programming

refactoring

Författare

Meng Wang

Chalmers, Data- och informationsteknik, Software Engineering

Jeremy Gibbons

University of Oxford

Kazutaka Matsuda

Tohoku University

Zhenjiang Hu

Research Organization of Information and Systems National Institute of Informatics

Science of Computer Programming

0167-6423 (ISSN)

Vol. 78 11 2216-2242

Styrkeområden

Informations- och kommunikationsteknik

Ämneskategorier

Programvaruteknik

Datavetenskap (datalogi)

DOI

10.1016/j.scico.2012.07.014

Mer information

Senast uppdaterat

2018-03-19