私はプログラム内でたくさんの異なるレコードを使用していますが、そのうちのいくつかは同じフィールド名を使用しています。Haskellでの名前空間汚染の回避
data Customer = Customer { ..., foo :: Int, ... }
data Product = Product { ..., foo :: Int, ... }
アクセサー関数「foo」が2回定義されているため、「複数の宣言」エラーが発生します。これを避ける1つの方法は、完全修飾されたインポートされた別のモジュールを使用するか、フィールドの名前を変更するだけです(これはやりたくない)。
ハスケルでこれを処理する正式な方法は何ですか?
私はあなたの痛みを共有:
はここで少し例(haskell-stackスクリプト)です。私はOOの世界から来ています。 – gawi
少なくとも、このプロジェクトでは、資格のある輸入品を使って行くようです。あなたの答えはありがとう!これは、私がtypeclassesを使うときにDRY違反を取り除くためのSchemeマクロを見逃したその瞬間のひとつです... – lbruder
[このプロジェクトページ](https://ghc.haskell.org/trac/ghc/wiki/)が見つかりました。レコード/ OverloadedRecordFields)は、複数のレコードデータ型が同じフィールド名を共有できるようにGHCのための 'OverloadedRecordFields'拡張機能に関するものです。 – Alexey