ジェネリックプログラミングはHaskellのデータ型を同型で統一的なデータ型に変換することで、複数のデータ型を統一的に扱えるような仕組みを提供する。応用例の一つとしてデータのシリアライズがある。
GHC.Generics
パッケージ情報など付加的な情報も扱える
- GHC.Generics
- GHC.Generics - HaskellWiki
- Datatype-Generic Programming in Haskell
- Generic programming
- Generic programming in Haskell
- Cooking Classes with Datatype Generic Programming
- What’s new with GHC generics in 8.0
- Deriving Bifunctor with Generics
Sums of Products
データ型を直積の直和によって統一的に扱う
- generics-sop
- True Sums of Products
- generics-eot - eithers of tuples
- Generics are simple: write your own ToJSON