• [^] # Re: ImportQualifiedPost

    Posté par (site web personnel) . En réponse à la dépêche GHC 8.8, 8.10 et 9.0. Évalué à 3.

    Le système de module de Haskell est mal fichu. Si le module Data.Text contient les symboles pack et split, alors :

    • import Data.Text va importer pack et split non qualifiés et qualifié avec Data.Text. Ainsi, on pourra utiliser pack ou Data.Text.pack.
    • import qualified Data.Text va seulement importer les deux fonctions de façon qualifiés.
    • import Data.Text as Foo va importer pack et split non qualifiés et qualifiés tel que Foo.pack.
    • import qualified Data.Text as Foo va importer pack et split qualifié tel que Foo.pack.

    Il existe encore quelques variantes. Mais la constante c'est que c'est non qualifié par défaut, ce qui est affreux. D'autant plus que le namespace des modules est global. Ainsi, tu peux écrire un package qui va exporter Data.Text et entrer en conflit avec le Data.Text du package text.