Why does the following give me an error unless I enable FlexibleInstances? instance Applicative (Either String) where pure x = Right x Right g <*> Right x = Right (g x) Right _ <*> Left s = Left s Left s <*> _ = Left s