New ticket 1274 -- Add a MonadState instance for the Parsec monad

Malcolm Wallace Malcolm.Wallace at
Mon Apr 16 06:58:33 EDT 2007

> Parsec has been careful to keep its non-Haskell98 components in separate
> modules that don't need to be imported:
>  "If you use the ParsecToken or ParsecPerm modules, you need
>  to enable the forall extension."
> Is this a correct interpretation, that this would prevent using Parsec
> with other compilers (e.g. nhc98)?

Just to be absolutely clear:

  * MPTC + FunDeps are not Haskell'98, and they are not supported by nhc98.
  * Parsec.Token and Parsec.Perm do not use MPTC.
  * Parsec.Perm uses existential quantification, which although not
    Haskell'98 is nevertheless supported by nhc98.
  * Parsec.Token uses local universal quantification, which is neither
    Haskell'98 nor supported by nhc98.

The difference between existential quantification and local universal
quantification is not widely appreciated or noticed, since both involve
the 'forall' keyword.


More information about the Libraries mailing list