Add -fallow-undecidable-instances to some Control.Monad modules
authorsimonpj@microsoft.com <unknown>
Thu, 9 Feb 2006 12:13:34 +0000 (12:13 +0000)
committersimonpj@microsoft.com <unknown>
Thu, 9 Feb 2006 12:13:34 +0000 (12:13 +0000)
commit5fa828b4f24b723382f426ca753e3fb04074ae54
tree307081c266a5224bf2e0a6cf676062e06d5d1fd6
parente55f25e8d69b466ad79e3349b3bec9b46fc83383
Add -fallow-undecidable-instances to some Control.Monad modules

I have recently tightened up GHC's implementation of the coverage
condition.  As a result some of the Control.Monad modules are rejected.

Example:
  class (Monad m) => MonadReader r m | m -> r where
  instance (Monoid w, MonadReader r m) => MonadReader r (WriterT w m)
Here, fv(Writer w m) is not a superset of fv(r).

The flag allows it.  I wonder if it's possible to use these modules
to send the type cheker into a loop.
Control/Monad/Cont.hs
Control/Monad/Error.hs
Control/Monad/List.hs
Control/Monad/State.hs
Control/Monad/Writer.hs