Saved in:
Bibliographic Details
Main Authors: Binder, David, Ermantraut, Lean
Format: Preprint
Published: 2025
Subjects:
Online Access:https://arxiv.org/abs/2504.18920
Tags: Add Tag
No Tags, Be the first to tag this record!
_version_ 1866908594931236864
author Binder, David
Ermantraut, Lean
author_facet Binder, David
Ermantraut, Lean
contents Pattern matching is a popular feature in functional, imperative and object-oriented programming languages. Language designers should therefore invest effort in a good design for pattern matching. Most languages choose a first-match semantics for pattern matching; that is, clauses are tried in the order in which they appear in the program until the first one matches. As a consequence, the order in which the clauses appear cannot be arbitrarily changed, which results in a less declarative programming model. The declarative alternative to this is an order-independent semantics for pattern matching, which is not implemented in most programming languages since it requires more verbose patterns. The reason for this verbosity is that the syntax of patterns is usually not expressive enough to express the complement of a pattern. In this paper, we show a principled way to make order-independent pattern matching practical. Our solution consists of two parts: First, we introduce a boolean algebra of patterns which can express the complement of a pattern. Second, we introduce default clauses to pattern matches. These default clauses capture the essential idea of a fallthrough case without sacrificing the property of order-independence.
format Preprint
id arxiv_https___arxiv_org_abs_2504_18920
institution arXiv
publishDate 2025
record_format arxiv
spellingShingle The Algebra of Patterns (Extended Version)
Binder, David
Ermantraut, Lean
Programming Languages
Pattern matching is a popular feature in functional, imperative and object-oriented programming languages. Language designers should therefore invest effort in a good design for pattern matching. Most languages choose a first-match semantics for pattern matching; that is, clauses are tried in the order in which they appear in the program until the first one matches. As a consequence, the order in which the clauses appear cannot be arbitrarily changed, which results in a less declarative programming model. The declarative alternative to this is an order-independent semantics for pattern matching, which is not implemented in most programming languages since it requires more verbose patterns. The reason for this verbosity is that the syntax of patterns is usually not expressive enough to express the complement of a pattern. In this paper, we show a principled way to make order-independent pattern matching practical. Our solution consists of two parts: First, we introduce a boolean algebra of patterns which can express the complement of a pattern. Second, we introduce default clauses to pattern matches. These default clauses capture the essential idea of a fallthrough case without sacrificing the property of order-independence.
title The Algebra of Patterns (Extended Version)
topic Programming Languages
url https://arxiv.org/abs/2504.18920