GHC.Generics
以下のようなものを提供する
Generic型クラス
代数的データ型を抽象化したデータ型
など
代数データ型を抽象化したデータ型は、
具体的にはU1や(:+:)などで、
これらを組み合わせることで任意の代数データ型を構築できる
何が嬉しいのか
Generic型クラスの利用を参照
hackage
GHC.Genericsの提供する型を見る
U1とか:+:とかについて
#WIP
#??
docsの説明、異常にわかりにくくない?mrsekut.icon
derivingしないで実装することはあるのか
多相な関数とかとはどのように質が異なるのか
つまり、hsの普通の肩変数を用いた定義とはどう異なるのか
f::a->a->a
tsでのgenericsってパラメトリック多相な関数のことを指すと思うけどそれとは違うのか
どういう型の知識が必要か
具体的に言えば、どういうGHC拡張の理解が必要か
Type Family?
関連するGHC拡張はなにか
DefaultSignatures
DeriveAnyClass
DeriveGenric
TypeOperators
FlexibleContexts
DefaultSignatures
DeriveAnyClass
https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/generics.html
Generic1ってなに?
https://hackage.haskell.org/package/generic-deriving
圏論で言えば、どの辺の概念になるのか
:+:とか見ると、??ってなるけど、Genericで生成された型を見る#611e01e11982700000ac7615とか見たら直積onlyを感じられる
どの記事を最初に読むのが良い?
pursのgenricsもだいたい同じ話なのか?
generic-lens
https://qiita.com/aiya000/items/778308345bc863f55d26
活用例
/haskell-shoen/Generics#5dee23239a6bf50000b9f43c
SOP
Comparing Libraries for Generic Programming in Haskel
http://www.cs.uu.nl/research/techreps/repo/CS-2008/2008-010.pdf
https://jeltsch.wordpress.com/2016/02/22/generic-programming-in-haskell/
https://blog.tiqwab.com/2017/01/09/ghc-generics.html
https://wiki.haskell.org/GHC.Generics#Representation_types
A Generic Deriving Mechanism for Haskell
http://dreixel.net/research/pdf/gdmh.pdf
別に6つのinstanceにする必要はないのね
中途半端にinstanceにしてたら変になったりするの #??
データ型を抽象化して関数、メソッド、データ構造等を実装するプログラミング手法
ADTを更に抽象化するのね
Serializable型クラス
https://blog.tiqwab.com/2017/01/09/ghc-generics.html
ここに書いてる定義はあくまで例であり、一般的な定義ではない #??
https://hackage.haskell.org/package/cereal-0.5.8.1/docs/Data-Serialize.html
https://wiki.haskell.org/Generics
https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/compiler/generic-deriving
https://hackage.haskell.org/package/generic-data
https://hackage.haskell.org/package/generic-deriving