Estoy usando muchos registros diferentes en un programa, algunos de ellos usan los mismos nombres de campo, p.Evitar la contaminación del espacio de nombres en Haskell
data Customer = Customer { ..., foo :: Int, ... }
data Product = Product { ..., foo :: Int, ... }
Ahora bien, como la función de acceso "foo" se define dos veces, me sale el error "Múltiples declaraciones". Una forma de evitar esto sería usar diferentes módulos que se importen completamente calificados, o simplemente cambiar el nombre de los campos (que no quiero hacer).
¿Cuál es la forma oficialmente sugerida de tratar esto en Haskell?
Comparto su dolor. Vengo del mundo OO. – gawi
Parece que iré con las importaciones calificadas, al menos para este proyecto. ¡Gracias a todos por sus respuestas o comentarios! Este es uno de esos momentos en los que echo de menos las macros de Scheme para deshacerme de las violaciones de DRY cuando uso tipos de clases ... – lbruder
He encontrado [esta página de proyecto] (https://ghc.haskell.org/trac/ghc/wiki/ Records/OverloadedRecordFields) sobre la extensión 'OverloadedRecordFields' para GHC para permitir que múltiples tipos de datos de registro compartan los mismos nombres de campo. – Alexey