generated at
DuplicateRecordFields
重複したfieldを持つHaskellのRecordを定義できるようにする
OverloadedRecordFieldsの3分割されたものの1つ


このように定義できる
hs
{-# LANGUAGE DuplicateRecordFields #-} data Foo = Foo { hoge :: Int } data Bar = Bar { hoge :: Float }
ただし利用時には型を明記する必要がある
hs
main = do let x = Foo 1 print $ hoge (x :: Foo) -- ok print $ hoge x -- error


自前のgetterを定義したらこんな感じになる
hs
fooHoge = hoge -- (もちろん)error
hs
fooHoge :: Foo -> Int fooHoge foo = hoge (foo :: Foo) -- ok
hs
fooHoge :: Foo -> Int fooHoge = hoge -- ok
Hs
fooHoge :: Foo -> Int fooHoge foo = hoge foo -- error
なんで最後のあかんねやmrsekut


パターンマッチとかは理想通り使える
hs
f Foo {hoge = hoge} = hoge


HaskellのRecordで導入される6つのものの内、getterが渋いだけであとは割と便利になる感じかmrsekut