Haskellのgeneric deriving
- sbwhitecap
- 3194
- 0
- 1
- 0
「組み込みの型クラスや newtype deriving などと同様に、generic derving でも deriving 節を利用した単純な導出インスタンス宣言を使えるようにする」ための機能を入れようという提案が行われていますね。 http://t.co/RzJsIkT
2011-09-06 08:30:48GHCの拡張みたいですが、こういう提案が次のHaskell規格に入ることはありますか QT @shelarcy: 「組み込みの型クラスや newtype deriving などと同様に、generic derving でも deriving 節を利用した単純な導出インスタンス宣言
2011-09-06 13:55:03@sbwhitecap generic deriving は現在の Haskell 規格の deriving を置き換えることを目指して開発されている機能なので、将来的には言語規格の一部となると思います。 http://j.mp/oRXSix
2011-09-06 16:28:52@sbwhitecap それが目的ですね。generic deriving を使えば、deriving 宣言の対象になっている型クラス同様、自分で定義した型クラスに対するインスタンスのメソッドの定義を自動的に生成できます。
2011-09-06 16:33:13@sbwhitecap ただ、現段階で次の Haskell 2011 (2012) に入れることはできませんね。
2011-09-06 16:29:39@sbwhitecap Haskell 2011 に入れる機能は既にある程度固まっている [http://j.mp/dKcV70 ] のと、GHC 版 generic deriving はまだ完成していない [http://j.mp/nOYVi3 ] ためです。
2011-09-06 16:29:51@sbwhitecap また、generic deriving は現在の Haskell の言語規格に入っていない「複数パラメータの型クラス(MultiParamTypeClasses)[http://j.mp/o6cC4E ]」という言語拡張を必要とします。
2011-09-06 16:34:15@sbwhitecap なので、まずは MultiParamTypeClasses が Haskell の言語規格に入らないと、 generic deriving を取り入れられることはできません。
2011-09-06 16:35:19@sbwhitecap (GHC 版 generic deriving では型族を使っていますが、UHC に実装されているオリジナルのバージョンでは型族を利用していないので、この部分は考慮しなくて良いと思います。 http://j.mp/cthtMW )
2011-09-06 16:36:25@sbwhitecap GHC 拡張の一つで、関数従属性(FunctionalDependencies こっちは知ってますか?)の代替として開発されている機能です。 http://j.mp/nLTlw8
2011-09-06 16:42:47@sbwhitecap 型クラスに複数の型パラメータを与えられるようにした場合、型の一つが決まった時に他の型も決定されないと、型推論がうまくいかなくなる可能性があります。そこでこの問題を解決するために、複数の型のうち一つが決まれば他の型も決まるという規則を定義するための機能です。
2011-09-06 16:48:29@sbwhitecap c.f. http://t.co/M0Y3fRU http://j.mp/qaOkGr
2011-09-06 16:51:04@sbwhitecap で、複数パラメータの型クラスの問題を解決するために提供されている機能のうち、一つが関数従属性で、関数従属性を置き換えるために開発されているもう一つの機能が型族という感じです。 c.f. http://j.mp/nnBacn
2011-09-06 16:54:27そうです。型推論を補強するための式を型で書きたいというのが、型族と関数従属性の motivation です。 QT @sbwhitecap: 要は型推論を補強する拡張ってことでいいのかな? #Haskell
2011-09-06 17:01:47@sbwhitecap だから、関数従属性の関数は、普通の Haskell で提供されている「式に対する関数」ではなくて、型から型を求める「型に対する関数」ですね。
2011-09-06 17:03:49