Le type fantôme peut être avantageusement déclaré via newtype:
the type is checked at compile time, at run time the two types can be treated essentially the same, without the overhead or indirection normally associated with a data constructor.
On peut ensuite aussi jouer avec l'extension OverloadedStrings comme suit:
{-# Language OverloadedStrings #-}modulePhantomTypewhereimportGHC.Exts(IsString(..))dataFirstnamedataLastnamenewtypePa=P{fromPhantom::String}instanceIsString(Pa)wherefromString=Pprénom="George"::PFirstnamenom="Abitbolt"::PLastnamedataClient=Client(PFirstname)(PLastname)client1=Clientprénomnomclient2=Client"Charles""Bronson"client3=Client("PasBill"::PFirstname)("PasGates"::PLastname)
Du coup on a plus du tout besoin d'utiliser de constructeur.
Mais on peut toujours mettre de façon explicite le type de la chaîne.
[^] # Re: Haskell newbie
Posté par MsieurHappy . En réponse au journal Les types fantômes. Évalué à 4.
Le type fantôme peut être avantageusement déclaré via
newtype:On peut ensuite aussi jouer avec l'extension
OverloadedStringscomme suit:Du coup on a plus du tout besoin d'utiliser de constructeur.
Mais on peut toujours mettre de façon explicite le type de la chaîne.
ne compileront pas.