Updating/understanding code from implicit configurations paper

Eric M. Pashman eric.pashman at gmail.com
Sat Jan 19 01:13:43 CET 2013


Whoops. I forgot you need the explicit `forall` with scoped type variables. I thought there was something much more involved going on here. Thanks, Shachaf.

Eric

On Jan 18, 2013, at 17:54 , Shachaf Ben-Kiki <shachaf at gmail.com> wrote:

> On Fri, Jan 18, 2013 at 3:32 PM, Eric M. Pashman <eric.pashman at gmail.com> wrote:
>> 
>>    normalize :: (Modular s a, Integral a) => a -> M s a
>>    normalize x = (M (mod x (modulus (undefined :: s)))) :: M s a
>> 
> 
> If you want your type variables to be scoped, you have to annotate
> them explicitly:
> 
>  normalize :: forall s a. (Modular s a, Integral a) => a -> M s a
>  normalize x = M (mod x (modulus (undefined :: s)))
> 
> See <http://www.haskell.org/ghc/docs/7.4.2/html/users_guide/other-type-extensions.html#scoped-type-variables>.
> 
>    Shachaf




More information about the Glasgow-haskell-users mailing list