2013
DOI: 10.1145/2499370.2462194
|View full text |Cite
|
Sign up to set email alerts
|

Reconciling exhaustive pattern matching with objects

Abstract: Pattern matching, an important feature of functional languages, is in conflict with data abstraction and extensibility, which are central to object-oriented languages. Modal abstraction offers an integration of deep pattern matching and convenient iteration abstractions into an object-oriented setting; however, because of data abstraction, it is challenging for a compiler to statically verify properties such as exhaustiveness. In this work, we extend modal abstraction in the JMatch language to support static, … Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2

Citation Types

1
1
0

Year Published

2017
2017
2017
2017

Publication Types

Select...
1

Relationship

0
1

Authors

Journals

citations
Cited by 1 publication
(2 citation statements)
references
References 30 publications
1
1
0
Order By: Relevance
“…In [1] they have reported reductions of program complexity similar to our present findings. Because of their intrusion into the type system, it is possible to reason statically about the totality of JMatch pattern clauses, whereas our approach shares the fate of most imperative object-oriented code, and can only be feasibly verified informally by inspection and testing.…”
Section: Related Worksupporting
confidence: 91%
See 1 more Smart Citation
“…In [1] they have reported reductions of program complexity similar to our present findings. Because of their intrusion into the type system, it is possible to reason statically about the totality of JMatch pattern clauses, whereas our approach shares the fate of most imperative object-oriented code, and can only be feasibly verified informally by inspection and testing.…”
Section: Related Worksupporting
confidence: 91%
“…On the other hand, because of the heavy-handed implicit transformation of JMatch programs, the possible interferences with other language features such as non-local control flow, concurrency, instrumentation and debugging are unclear. Furthermore, despite recent award-winning theoretical publications [1], their implementation is stuck with an obsolete snapshot of the host language Java 1.4 (sic! ), and hence of no practical relevance for contemporary software production.…”
Section: Related Workmentioning
confidence: 99%