Alejandro Russo wrote:

> I try the follow line in hugs (mode 98 enable)
> 
> Prelude> :t (let f = \x -> x == x in ( f 'a', f 123 ) )
> ERROR: Illegal Haskell 98 class constraint in inferred type
> *** Expression : let {...} in (f 'a',f 123)
> *** Type       : Num Char => (Bool,Bool)
> 
> Prelude>
> 
> This happend because Num Char can never be satisfied with a 
> predicate evidence. However in hugs without 98 mode the result
> of the previos line is : 
> 
> Prelude> :t ( let f = \x -> x == x in (f 'a' , f 123 ) )
> let {...} in (f 'a',f 123) :: Num Char => (Bool,Bool)
> 
> This (maybe) indicates how  hugs make evidence elimination in 
> runtime while Haskell 98 donīt do that. I donīt have a clear
> idea about this, please someone can help me?. Thanks.

AFAICT, this is a consequence of the monomorphism restriction, which
is discussed in section 4.5.5 of the Haskell report:

        http://haskell.org/onlinereport/decls.html#sect4.5.5

-- 
Glynn Clements <[EMAIL PROTECTED]>
_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to