Comment ce code
data D = D { _d :: ![P] } -- Note the strictness annotation!
Comparez à ceci
newtype D = D { _d :: [P] }
Un site réponse à une question connexe dit :
la principale différence entre data et newtype est que les constructeurs de data sont paresseux alors que ceux de newtype sont stricts.
Comment cette différence fonctionne-t-elle lorsque le data
a une annotation de rigueur ?
(la question est basée sur un code réel sur lequel je suis tombé)