Haskell の レコード構文(Record Syntax)にて、簡潔なフィールド名を定義すると重複しやすい問題の解決方法
Haskell の レコード構文(Record Syntax)にて、簡潔なフィールド名を使い定義すると名前がかぶりやすくなる問題があります。
参考サイト を見ると、レコード名をprefixとしたフィールド名を使うとよいようですが、こんなものなのでしょうか?
よりよい方法はないものでしょうか?
エラーになる例:
data Java = Java { power :: Integer ; url :: String }
data Link = Link { title :: String ; url :: String }
-- 下記が定義されるためか、重複してしまう
-- url :: Java -> String
-- url :: Link -> String
エラー内容:
Multiple declarations of ‘url’
Declared at: (省略)
改善した例:
data Java = Java { javaPower :: Integer ; javaUrl :: String }
data Link = Link { linkTitle :: String ; linkUrl :: String }
※ 「命名規則や用語がHaskell的に変」という場合もぜひ、コメントや編集などでフィードバックお願いします