Poiche' nella definizione della funzione contains viene utilizzato il predicato di eguaglianza, il tipo di contain inferito da Haskell e' contains :: Eq a => a -> [a] -> Bool Nell'inferire il tipo per la funzione cucu Haskell controlla che l'applicazione (contains g lg) sia corretta (il tipo di questa applicazione sara' inferito come tipo del codominio di cucu. Il problema e' che sul tipo Giuggiolo non e' definito il predicato di uguaglianza '==', e quindi il tipo Giuggiolo non appartiene alla classe Eq. Per risolvere il problema, e' sufficiente inserire la seguente definizione di istanza dopo la definizione del tipo di dato Giuggiiolo: instance Eq Giuggiolo where (Giuggiolo i) == (Giuggiolo j) = i==j