2017Swiftコンパイラのコードリーディングをしていてふと見つけたパターンマッチの網羅チェックに関する論文。matching論文ではScalaのDottyというコンパイラに導入してissueやパフォーマンスの改善に繋がったと紹介されていて、下のp-rによってSwiftにも採用されている。paperなら二段組で4ページなのでさくっと読めた。論文要点まとめ落合先生のフォーマットを使ってみる。集合の包含関係)によって形式化する。先行研究に比べてどこがすごい?特定の言語や型システムから切り離されており、一般的でシンプルなアルゴリズム。特定の型システムに適用する場合にもコアのロジックはそのままにカスタマイズできる。...」という形式化。よって定義したところ?どうやって有効だと検証した?フォーマルな証明はされていない。Scalaのdottyに採用してissueが改善した。ソースコードが1/3程度になった。ほとんどのケースでパフォーマンスが改善した。Swiftでいう、caseにwhereが付いている場合などはこのアルゴリズムでは扱うのは難しい。メモ基本的なアイディアは型とパターン(case)を値のSpaceだと考える。型TのSpaceを表す。パターンpのSpaceを表す。subtraction。直観的には集合の差分。これを使って網羅性は以下のように形式化される。...直観的にはパターンが網羅している値の和集合が、型Tに属する値の集合のスーパーセットになっている、みたいなイメージ。subspace関係を調べることで網羅チェックが行える。Paperは4ページなので自分で読んだほうが良いかも。次はSwiftのコンパイラの実装を読んでみるか、実装してみる。