generated at
HaskellのRecordの問題点の解決策の遍歴




今までの拡張の遍歴と現在どうなっているのか、知らないと、
色々な記事がごったで出てくるので、
有象無象の解決策があるように見えて困るmrsekutmrsekut



今までの時代の流れを知っておきたい


結局GHC9.2.1時代のベスプラは?
DuplicateRecordFieldsで同じfieldのRecordをいくつか定義して、
NoFieldSelectorsでgetterを無効にし、
OverloadedRecordDotでアクセスする
という感じなのかな?
9.2.1の拡張を使えばExtensible recordは不要になるのかどうか



GHC 9.2に入るNoFieldSelectorsの解説記事のこの言い回し
>他の言語と遜色ないレコード操作が可能になり、レコード自体の採用率も高まることが予想される ref
なるほどmrsekut
Recordが渋いから、あまりRecord使わずに Hoge a b c d e のような型で定義しよう、みたいなノリがあったりしたのかな
これをすると、順序を間違えるなどの問題が生じうる
また、こういう複数ConstructorのRecordはバッドプラクティスだた
hs
data Hoge = A { id :: Int } | B { id :: Int }
これみたいに名前がかぶっていると、getterとしての id が機能しなくなる





関係するのはどれ?
OverloadedRecordFieldsが提案された
大きいので3つに分割された
8.10.1
9.2
9.2.1



たぶんあまりかんけいない?
6.8.1
NamedFieldPuns
RecordWildCards
TraditionalRecordSyntax


この問題に対する解決法
GHC拡張を使わずに頑張る、あるいは妥協
GHC拡張
extensible record
GHC拡張を使わない解決法、あるいは妥協
あるいは外部packageを使うのがデファクトという結論なのであればそれでもいい
この問題と、この拡張と、extensible record packageの関係
どうでもいいっちゃどうでもいいが、このDuplicateRecordFieldsとかもちゃんと使われるんだ〜みたいなのを知りたい
extensible recordの選定