From 06afbc92056c2be4c44a353cc914df2c18155d52 Mon Sep 17 00:00:00 2001 From: Sam Zhou Date: Sun, 25 Feb 2024 14:14:00 -0800 Subject: [PATCH] [blog] Deeply Nested Pattern Matching in samlang (#1495) --- .../pattern-matching-not-exhaustive.png | Bin 0 -> 99447 bytes .../samlang-nested-pattern-matching/page.mdx | 112 ++++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 packages/www/public/blog/2024-02-25-samlang-nested-pattern-matching/pattern-matching-not-exhaustive.png create mode 100644 packages/www/src/app/blog/(blog-posts)/2024/02/25/samlang-nested-pattern-matching/page.mdx diff --git a/packages/www/public/blog/2024-02-25-samlang-nested-pattern-matching/pattern-matching-not-exhaustive.png b/packages/www/public/blog/2024-02-25-samlang-nested-pattern-matching/pattern-matching-not-exhaustive.png new file mode 100644 index 0000000000000000000000000000000000000000..f3d8783bdb26d30f2f1414a705da87e922011903 GIT binary patch literal 99447 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 z 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%0Dr8l=p1Q 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 PTFA*LN#{O&@&11R;`02M literal 0 HcmV?d00001 diff --git a/packages/www/src/app/blog/(blog-posts)/2024/02/25/samlang-nested-pattern-matching/page.mdx b/packages/www/src/app/blog/(blog-posts)/2024/02/25/samlang-nested-pattern-matching/page.mdx new file mode 100644 index 00000000..7164f481 --- /dev/null +++ b/packages/www/src/app/blog/(blog-posts)/2024/02/25/samlang-nested-pattern-matching/page.mdx @@ -0,0 +1,112 @@ +export const title = "Deeply Nested Pattern Matching in samlang"; +import blogPostPageMetadata from '../../../../../../../lib/blog-post-page-metadata'; +export const metadata = blogPostPageMetadata(title, "/blog/2024-02-25-samlang-nested-pattern-matching/pattern-matching-not-exhaustive.png"); + +![Pattern matching with error](/blog/2024-02-25-samlang-nested-pattern-matching/pattern-matching-not-exhaustive.png) + +Yesterday, I cut a [release](https://github.com/SamChou19815/samlang/releases/tag/v0.10.0) of [samlang](https://samlang.io) which contains first-class support for deeply nested pattern matching. In this blog post, I will document some of the rationales and implementation challenges. + +## Rationale + +Late last year, I was making a big push to make samlang's standard library more complete. More specifically, I want to add long-missing essentials like `Map` and `Set`. + +In a functional programming language that favors immutable data structures, `Map` and `Set` are usually implemented using an auto-balancing binary tree. The implementation code often needs to [perform pattern matching on a tuple](https://github.com/facebook/flow/blob/48b30f112cc4ab2cbb5633d0b6202da828772a2c/src/hack_forked/utils/collections/third-party/flow_map.ml#L238-L275), and sometimes even deeper structures. samlang has supported single-level pattern matching since day one, but using single-level pattern matching is just too awkward for this kind of code. + +In addition, it turns out that supporting deeply nested pattern matching is very difficult. While exhaustiveness checking in single-level pattern matching is like a walk in the park, it is an NP-hard problem for deeply nested pattern matching. + +## Difficulty + +Consider the example in the screenshot. How can you systematically check and decide that we are missing the `None, None` case? + +Intuitively, you might think that you can generate all possible combinations of patterns, and then remove all the ones that are matched by the code. Obviously, this is an exponential algorithm at best. However, even if you don't care about performance, it is still not practical, because types can be recursive! Consider how you would pattern match on a functional list: + +```samlang +class List(Nil, Cons(T, List)) {} +``` + +If you try to enumerate all combinations of `List`, you will get: + +```text +Nil +Cons(int, Nil) +Cons(int, Cons(int, Nil)) +Cons(int, Cons(int, Cons(int, Nil))) +... +``` + +Recursive types make the set of inhabitants of that type infinite, so the naive solution clearly does not work. + +## Theory + +I was not able to come up with the type-checking algorithm by myself, but fortunately, there are already a few languages that implement deeply nested pattern matching, and there are [papers](http://moscova.inria.fr/~maranget/papers/ml05e-maranget.pdf) that describes the exact strategy. In samlang's implementation, I mostly followed the OCaml paper linked before. + +The paper presents a quite powerful idea: the problem of exhaustiveness checking can be reduced to the problem of redundancy checking: if we add a final wildcard pattern `_` that is decided to be not redundant, then we know that the user-provided pattern matching is not exhaustive. In reality, we do need to implement two variants of the base algorithm, so that during exhausiveness checking we can also produce a counterexample in addition to the yes/no answer. Nevertheless, we only need to understand the idea once to solve both problems. + +I will not go into details of the exact algorithm, since the paper already covers it and provides pseudocode. However, the elegance of the core abstraction is worth the extra elaboration. The paper developed a general-purposed abstract representation of patterns that are not specific to OCaml. There are only 3 kinds of patterns: + +```rust +enum Pattern { + Constructor(C, Vec>), + Wildcard, + Or(Vec>) +} +``` + +The constructor variant can be used to model patterns like `Some(_), None`, or just any nominal struct like `Student { name, age }`. The wildcard pattern covers both identifier patterns and actual wildcard patterns, since they are equivalent for exhaustiveness checking purposes. Finally, the OR pattern can be used to model either nested OR patterns or multiple patterns that have the same handler. For example: + +```rust +fn atLeastLengthTwo(l: List) -> bool { + match l { + List::Nil | List::Cons(_, List::Nil) -> false, + List::Cons(_, List::Cons(_, _)) -> true, + } +} +``` + +The only language-specific part of the algorithm is a function `is_complete` that tells whether a set of constructors `C` of a type `T` is exactly the set of all possible constructors of `T`. For example, the function always return true for simple structs, while `is_complete({Some, None}, Option) == true` and `is_complete({Nil}, List) == false`. samlang's implementation of this function is almost the same as OCaml's implementation. + +It's worth noting that the idea is powerful enough to not only handle nominally-typed languages, but also handle structurally-typed languages with best effort. In JavaScript, there is a common pattern of defining a disjoint union type, and switching on the discriminator field: + +```typescript +type List = + | { type: 'nil' } + | { type: 'cons', v: T, next: List }; + +function isEmpty(list: List): boolean { + // Hypothetical pattern-matching syntax in JS + match (list) { + case {type: 'nil', ...}: + return true; + case {type: 'cons', ...}: + return false; + } +} +``` + +We could guess with the best effort from the type structure that the field `type` is the discriminator and thus constructor-like, so the patterns above can be modeled as: + +```rust +vec![ + Pattern::Constructor("nil", vec![]), + Pattern::Constructor("cons", vec![ + Pattern::Wildcard, + Pattern::Wildcard, + ]), +] +``` + +Note that we do need to do extra work to convert the implicit wildcard patterns into explicit ones. + +## Implementation in samlang + +Despite the mathematical complexity of the core algorithm, it is remarkably easy to implement: the core logic only takes less than 400 lines. However, it does take a while to connect the rest of the system to the core logic. + +The algorithm is quite flexible. I have extended it a little bit to gracefully handle invalid patterns. During redundancy checking, invalid patterns are assumed to match nothing and omitted; during exhaustiveness checking, they are assumed to match everything. This strategy ensures that we don't emit false-positive errors. In addition, it can also be used to support `if let = {...} else {...}` syntax: we will error if the single pattern is exhaustive, so that you don't write some useless code like `if let Student(_) = Student("Foo") {} else {}`. It can also be used to unify the implementation of destructuring with pattern matching. Intuitively, destructuring has the opposite behavior of `if let`, the single pattern must be exhaustive. + +Therefore, with the support of this core algorithm, samlang also gains the `if let` syntax, and the implementation of `if let`, destructuring, and pattern matching is unified by the same infra. + +## Future Work + +Due to my laziness, there are still some missing pieces, including the lack of `if ` support for patterns and multiple patterns going into the same branch. However, it is good enough that enables me to finish the implementation of immutable `Map` and `Set` in the samlang standard library. + +In the next few months, I will mostly focus on switching the reference-counting GC I hacked together for samlang into the native GC support from WASM.