Unexpected ambiguity in a seemingly valid Haskell 2010 program