Предотвращение загрязнения пространства имен в Haskell

Я использую много разных записей в программе, причем некоторые из них используют одинаковые имена полей, например

data Customer = Customer { ..., foo :: Int, ... }
data Product = Product { ..., foo :: Int, ... }

Теперь, когда функция доступа "foo" определена дважды, я получаю ошибку "Несколько объявлений". Один из способов избежать этого - использовать разные модули, которые полностью импортируются, или просто переименовывать поля (чего я не хочу делать).

Каков официально предлагаемый способ решения этой проблемы в Haskell?

53
задан gawi 23 November 2010 в 15:44
поделиться