Truly abstract interfaces for algebraic data types: the extractor typing problem

Pattern matching enables inspecting algebraic data types, but typically prevents hiding the implementation of the matched algebraic data type. In Scala, instead, extractors also allow pattern matching on non-algebraic data types and invoking methods on the obtained objects, while partially decoupling API consumers from the API implementation. But as we show in this paper, pattern matching using extractors is restricted compared to matching against case classes. We argue this violates the appropriate variant of the uniform access principle. To address this problem, we propose a small language extension, which enables defining truly abstract interfaces and freely evolve their implementation.


Published in:
Proceedings of the 9th ACM SIGPLAN International Symposium on Scala
Presented at:
Scala 2018, St. Louis, Missouri, USA, September 28-28, 2018
Year:
Sep 28 2018
Keywords:
Laboratories:


Note: The status of this file is: EPFL only


 Record created 2018-11-27, last modified 2019-03-17

POSTPRINT:
Download fulltext
PDF

Rate this document:

Rate this document:
1
2
3
 
(Not yet reviewed)