Hilfreich für komplexere Aufgaben sind "sprechende" Typdefinitionen. Diese werden in Haskell mit dem Begriff type eingeleitet. Der neue Typ muss mit einem Großbuchstaben beginnen.
type Text = String
type Zeile = String
type Wort = String
Damit kann die Funktion makeIndex spezifiziert werden:
makeIndex :: Text -> [(Wort,[Int])]