Hi, This does not appear to be related to ImplicitParameters, rather `MonoLocalBinds` is not working as expected.
Here is an example without implicit parameters that compiles just fine, but would be rejected if `p` was monomorphic: {-# LANGUAGE NoMonomorphismRestriction, MonoLocalBinds #-} class C a where f :: a -> () instance C Bool where f = const () instance C Char where f = const () g = let p = f in (p 'a', p True) -Iavor On Fri, Mar 22, 2013 at 1:39 AM, Roman Cheplyaka <r...@ro-che.info> wrote: > The value of the following expression > > let ?y = 2 in > let p = ?y in > let ?y = 1 in > p > > depends on whether the second binding is generalised. > > MonomorphismRestriction makes it not generalise, hence the value is 2. > > What surprises me is that MonoLocalBinds doesn't have this effect. > > Prelude> :set -XImplicitParams -XNoMonomorphismRestriction > -XMonoLocalBinds > Prelude> let ?y = 2 in let p = ?y in let ?y = 1 in p > 1 > > What's going on here? > > Roman > > _______________________________________________ > Glasgow-haskell-users mailing list > Glasgow-haskell-users@haskell.org > http://www.haskell.org/mailman/listinfo/glasgow-haskell-users >
_______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users