A phantom type is a parameterised type whose parameters do not all appear on the right-hand side of its definition, e.g. from Control.Applicative: Here Const is a phantom type, because the b parameter doesn't appear after the = sign. Phantom types are useful in a variety of contexts: in Data.Fixed they are used with type classes to encode the precision being used, with smart constructors in GADTs