Awesome Recursion Schemes
Recursion Schemesを扱う資料や関連プロジェクトをまとめたAwesomeリストです。
目次
入門
- Awesome Recursion Schemes - Recursion Scheme の学習と利用に役立つリソース集です。
- 実践 Recursion Schemes - Pattern Functor、Fixpoint、Anamorphism、Catamorphism、Paramorphism、 Hylomorphism を、前提知識をほとんど必要とせず紹介します。
- Recursion Scheme 入門 - Recursion Scheme をゼロから発見し、Edward Kmett のライブラリの 小さなサブセットを実装する3部作です。
- Algebra を理解する - Bartosz Milewski が F-Algebra を解説し、Catamorphism の文脈で 使用する方法を示します。
- JavaScript と Flow の Recursion Scheme - 関数型プログラミングの経験が少ない開発者向けに、JavaScript の Recursion Scheme と関連概念を紹介するシリーズです。
記事
- Recursion Schemes:フィールドガイド(Redux) - コード例を添えたさまざまな Recursion Scheme の一覧です。
- Catamorphism - Haskell Wiki の定義です。
- Catamorphism - Edward Kmett による School of Haskell のコード付き簡易定義です。
- 正方形を回転する - Jared Tobin が Hylomorphism で Quadtree を回転します。
- Recursion Schemes 第5部:こんにちは、Hylomorphism
- Promorphism、その前後 - Jared Tobin による Prepromorphism と Postpromorphism の実例です。
- 時間旅行する Recursion Scheme - Jared Tobin が例を通じて Histo と Futu を探ります。
- Recursion Schemes 第4部:時間が肝心 - Histomorphism と Futumorphism に関する実践的な記事です。
- 早見表 - さまざまな Recursion Scheme とその双対の地図です。
- Visitor Pattern を修正する - Visitor Pattern が Catamorphism で使う F-Algebra を実装することを Java で示します。
- Scala の Recursion Scheme - Fixpoint Combinator、Anamorphism、Catamorphism、Hylomorphism、Paramorphism、Apomorphism、Histomorphism、Dynamorphism、Futumorphism を紹介します。
- Fold の中身:recursion-schemes の基本 Catamorphism - Fold の一般化として Catamorphism を紹介します。
実世界の Hylomorphism
Hylomorphism を適用して小さな実用問題を解く、Bartosz Milewski の記事です。
- 実世界で Hylomorphism を追跡する - Advent of Code 2017、Domino 課題
- Hylomorphism の解禁 - Advent of Code 2018、文字列比較課題
論文
- Banana、Lens、Envelope、Barbed Wire による関数型プログラミング、1991、Meijer ほか - この分野の大部分の基礎になった原論文です。
- ソートの双対性、2013、Hinze ほか - 多くの基本的なソートアルゴリズムが対として存在し、その対が Fold と Unfold の双対性から自然に生じることを示します。
- Bialgebra と分配法則によるソート、2012、Hinze ほか - Paramorphism と Apomorphism を使ってソートアルゴリズムを より効率的に実装する方法を示します。
- ボイラープレートを捨てる:ジェネリックプログラミングの実践的設計パターン、2003、SPJ ほか - 豊かな相互再帰データ型から構築されたデータ構造を走査するプログラムを 記述するための設計パターンです。
発表
- Tim Philip Williams のスライド集 - 「Recursion Schemes by Example」と「Exotic Tools for Exotic Trades」は、 多くの Recursion Scheme の簡潔な定義と実例を提供します。
- 構造化 Recursion Scheme を統一する - Ralf Hinze、Nicolas Wu、Jeremy Gibbons による12分間の発表です。
- Recursion Schemes - London Haskell Meetup で Tim Williams が発表しました。
- F-Algebra、または心配をやめて型システムを愛するようになった方法 - NYC Haskell User’s Group で Anthony Burzillo が発表しました。
- Recursion Scheme のやさしい入門 - Lambdaconf 2016 で Jean Remi Desjardins が発表しました。
- recursion-scheme-talk - Recursion Scheme に関するスライド集です。
- Bracer:Coproduct と Recursion Scheme で実世界の言語を変換する - Patrick Thomson による、Coproduct と Recursion Scheme でプログラムを構造化する高度な講演です。
- Recursion:関数型プログラミングが底に達する場所 - Greg Pfeil による、Haskell と Scala の再帰的 Fixpoint データ構造と Recursion Scheme の入門です。
- Algebra によるプログラミング - Bartosz Milewski の記事を講演化し、LambdaCon で発表したものです。
- Banana の皮をむく:第一原理からの Recursion Scheme - Zainab Ali が LambdaWorld で発表した入門講演です。
早見表
- Morphisms のヒッチハイクガイド - 印刷可能な PDF を含む、さまざまな Morphism の概要です。
Podcast
- Magic Read Along - Recursion Scheme が頻繁に登場する Category Theory の気軽な議論です。Histomorphism と Futumorphism を扱う第 33回も含みます。
- Scala Love - Scala に関する Podcast で、 第2回に Recursion Scheme が登場します。
- The Haskell Cast - John Wiegley が出演する第13回に Recursion Scheme が登場します。
実装
- recursion-schemes: Haskell 向け - Edward Kmett による標準的な実装です。
- Matryoshka:Scalaz を使う Scala 向け - Fixpoint データ構造の一般化された Fold、Unfold、Traversal です。
- andyscott/droste:Cats を使う Scala 向け - Fixpoint データ構造の一般化された Fold、Unfold、Traversal です。
- recursion_schemes: Idris 向け。Edward Kmett の Haskell ライブラリを基にしています。
- purescript-matryoshka:PureScript 向け - 開発中の Matryoshka 移植版です。
- recursion:ATS 向け - ATS による Recursion Scheme の実演です。
- dada:Dhall 向け - Dhall の Recursion Scheme ライブラリです。
- static-land-recursion-schemes:JavaScript/Flow 向け - flow-static-land のスタイルで記述されたデータ構造用 Scheme です。
- Katalyst:Kotlin 向け - 軽量な高 Kind 多相を使い、Matryoshka を再構想したものです。
ライセンス
このコンテンツは CC0 の下で 提供されています。