úÎ íh0      !"#$%&'()*+,-./None+6:DOST"An argument is phantom if you can 0 the whole ignoring the argument`An argument is representational if you can lift a coercion of the argument into one of the whole0  !"#$%&'()*+,-./.  !"#$%&'()*+,-./1      !"#$%&'()*+,-./012345$roles-0.2.0.0-DDoJwV7BL6T5PD3mXdV1gP Data.RolesPhantomphantomRepresentationalrep$fRepresentationalTYPETYPELast$fRepresentationalTYPETYPEFirst$fRepresentationalTYPETYPEEndo$fRepresentationalTYPETYPEDual!$fRepresentationalTYPETYPEProduct$fRepresentationalTYPETYPESum!$fRepresentationalTYPETYPEComplex $fRepresentationalTYPETYPEIntMap$fRepresentationalTYPETYPEMap$fRepresentationalTYPETYPEST$fRepresentationalTYPETYPEIO$fRepresentationalTYPETYPEMaybe$fRepresentationalTYPETYPE[]!$fRepresentationalTYPETYPE(,,,,,)!$fRepresentational(->)TYPE(,,,,,)"$fRepresentational(->)TYPE(,,,,,)0"$fRepresentational(->)TYPE(,,,,,)1"$fRepresentational(->)TYPE(,,,,,)2"$fRepresentational(->)TYPE(,,,,,)3 $fRepresentationalTYPETYPE(,,,,) $fRepresentational(->)TYPE(,,,,)!$fRepresentational(->)TYPE(,,,,)0!$fRepresentational(->)TYPE(,,,,)1!$fRepresentational(->)TYPE(,,,,)2$fRepresentationalTYPETYPE(,,,)$fRepresentational(->)TYPE(,,,) $fRepresentational(->)TYPE(,,,)0 $fRepresentational(->)TYPE(,,,)1$fRepresentationalTYPETYPE(,,)$fRepresentational(->)TYPE(,,)$fRepresentational(->)TYPE(,,)0$fRepresentationalTYPETYPE(,)$fRepresentational(->)TYPE(,) $fRepresentationalTYPETYPEEither $fRepresentational(->)TYPEEither$fRepresentationalTYPETYPE(->)$fRepresentational(->)TYPE(->) $fRepresentationalTYPEk1Coercion $fRepresentational(->)k1Coercion$fPhantomTYPEk1Const$fRepresentationalTYPEk1Const$fRepresentational(->)TYPEConst$fPhantomTYPEk1Proxy$fRepresentationalTYPEk1Proxyghc-primGHC.Primcoerce