[論文レビュー] Functor is to Lens as Applicative is to Biplate: Introducing Multiplate
この論文は、Haskellにおける新しい汎用プログラミング抽象であるMultiplateを紹介する。これは、BiplateとComposを一般化し、ランク-3多形を用いて相互再帰的データ型をサポートする。コアルゲブラとモノイダル自然変換を用いて、UniplateとComposのコア型のカテゴリカル同型を確立し、それらの基礎を統一することで、複雑なデータ構造に対するより単純で強力な汎用走査システムを実現する。
This paper gives two new categorical characterisations of lenses: one as a coalgebra of the store comonad, and the other as a monoidal natural transformation on a category of a certain class of coalgebras. The store comonad of the first characterisation can be generalized to a Cartesian store comonad, and the coalgebras of this Cartesian store comonad turn out to be exactly the Biplates of the Uniplate generic programming library. On the other hand, the monoidal natural transformations on functors can be generalized to work on a category of more specific coalgebras. This generalization turns out to be the type of compos from the Compos generic programming library. A theorem, originally conjectured by van Laarhoven, proves that these two generalizations are isomorphic, thus the core data types of the Uniplate and Compos libraries supporting generic program on single recursive types are the same. Both the Uniplate and Compos libraries generalize this core functionality to support mutually recursive types in different ways. This paper proposes a third extension to support mutually recursive data types that is as powerful as Compos and as easy to use as Uniplate. This proposal, called Multiplate, only requires rank 3 polymorphism in addition to the normal type class mechanism of Haskell.
研究の動機と目的
- UniplateとComposのような既存の汎用プログラミングライブラリのカテゴリカルな基礎を統一すること。
- BiplateとComposを、型安全かつ合成可能な方法で、相互再帰的データ型をサポートするように一般化すること。
- Uniplateの使いやすさとComposの表現力の両方を兼ね備えた、新しい抽象であるMultiplateを導入すること。
- レンズとアプリカティブのカテゴリカルな特徴づけを用いて、UniplateとComposのコア型が同型であることを証明すること。
- Multiplateがランク-3多形のみを必要とすることを示し、標準的なHaskell型クラス機構で実用可能であることを明らかにすること。
提案手法
- ストアコモナドのコアルゲブラとしてレンズをカテゴリカルに特徴づけ、これをカルテジアン・ストア・コモナドに一般化する。
- カルテジアン・ストア・コモナドのコアルゲブラが、UniplateにおけるBiplate型の数学的基盤であることを特定する。
- Composのcomposを、特定のコアルゲブラの圏上のモノイダル自然変換として特徴づける。
- 2つの一般化——カルテジアン・ストア・コモナドのコアルゲブラとモノイダル自然変換——の同型を証明し、UniplateとComposを統一する。
- 両者を一般化する新しい抽象であるMultiplateを提案し、ランク-3多形を用いて相互再帰的型の走査を可能にする。
- FunctorとLens、ApplicativeとBiplateの間のカテゴリカル双対性を用いて、Multiplateの設計と形式的定式化を導く。
実験結果
リサーチクエスチョン
- RQ1UniplateとComposのコア型がカテゴリカルに同型であることを示せるか?
- RQ2BiplateとComposを、原理的かつ整合的な方法で、相互再帰的データ型をサポートするように一般化できるか?
- RQ3FunctorとLens、ApplicativeとBiplateの間の双対性を特徴づけるカテゴリカル構造は何か?
- RQ4UniplateのシンプルさとComposの表現力を併せ持つ新しい汎用プログラミング抽象を構築できるか?
- RQ5このような一般化を表現するために必要な型システム機能は何か?また、それはランク-3多形のみで達成可能か?
主な発見
- カルテジアン・ストア・コモナドのコアルゲブラは、Biplate型と同型であり、Uniplateの走査メカニズムのカテゴリカルな基盤を提供する。
- 特定のコアルゲブラの圏上のモノイダル自然変換は、Compos型と同型であり、それの理論的基盤を統一する。
- 2つの一般化の間の同型は、UniplateとComposのコア抽象がカテゴリカルに同等であることを確認する。
- Multiplateは、Composと同等の表現力とUniplateと同等の使いやすさを持つ、相互再帰的型をサポートする新しい汎用プログラミング抽象として提案される。
- Multiplateの構築にはランク-3多形のみが必要であり、標準的なHaskell型クラスシステムで実用可能である。
- 本論文は、形式的な双対性を確立する:FunctorはLensに対して、ApplicativeはBiplateに対して、Multiplateはその次の一般化として拡張される。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。