HaskellのRecordの問題点の解決策の遍歴
今までの拡張の遍歴と現在どうなっているのか、知らないと、
色々な記事がごったで出てくるので、
有象無象の解決策があるように見えて困るmrsekut.icon*2
今までの時代の流れを知っておきたい
結局GHC9.2.1時代のベスプラは?
という感じなのかな?
GHC 9.2に入るNoFieldSelectorsの解説記事のこの言い回し
他の言語と遜色ないレコード操作が可能になり、レコード自体の採用率も高まることが予想される ref なるほどmrsekut.icon
Recordが渋いから、あまりRecord使わずにHoge a b c d eのような型で定義しよう、みたいなノリがあったりしたのかな
これをすると、順序を間違えるなどの問題が生じうる
また、こういう複数ConstructorのRecordはバッドプラクティスだた
code:hs
data Hoge = A { id :: Int }
| B { id :: Int }
これみたいに名前がかぶっていると、getterとしてのidが機能しなくなる
関係するのはどれ?
大きいので3つに分割された
8.10.1
9.2
9.2.1
たぶんあまりかんけいない?
6.8.1
NamedFieldPuns
RecordWildCards
TraditionalRecordSyntax
この問題に対する解決法
GHC拡張を使わずに頑張る、あるいは妥協
GHC拡張
extensible record
GHC拡張を使わない解決法、あるいは妥協
あるいは外部packageを使うのがデファクトという結論なのであればそれでもいい
この問題と、この拡張と、extensible record packageの関係
extensible recordの選定