Reading the book Real world Haskell geting below example of Overlapping instances
Real world Haskell
instance (JSON a) => JSON [a] where toJValue = undefi
These exist
ghci> :i ToJSON ... instance ToJSON [Char] ... instance (ToJSON a, ToJSON b) => ToJSON (a, b)
So there'd be an overlap even if GHC took context into account (see Daniel Fischer's answer).