My GHC 7.6.1 (on a Mac) compiles this code without any warnings or errors.

Do you have some other compilation flags in effect?


On Fri, Nov 9, 2012 at 11:09 AM, Roman Cheplyaka <r...@ro-che.info> wrote:

> For this module
>
>     module Test where
>
>     import System.Random
>
>     data RPS = Rock | Paper | Scissors deriving (Show, Enum)
>
>     instance Random RPS where
>       random g =
>         let (x, g') = randomR (0, 2) g
>         in (toEnum x, g')
>       randomR = undefined
>
> ghc (7.4.1 and 7.6.1) reports an error:
>
>     rand.hs:9:9:
>         No instance for (Random t0) arising from the ambiguity check for g'
>         The type variable `t0' is ambiguous
>         Possible fix: add a type signature that fixes these type
> variable(s)
>         Note: there are several potential instances:
>           instance Random RPS -- Defined at rand.hs:7:10
>           instance Random Bool -- Defined in `System.Random'
>           instance Random Foreign.C.Types.CChar -- Defined in
> `System.Random'
>           ...plus 34 others
>         When checking that g' has the inferred type `g'
>         Probable cause: the inferred type is ambiguous
>         In the expression: let (x, g') = randomR (0, 2) g in (toEnum x, g')
>         In an equation for `random':
>             random g = let (x, g') = randomR ... g in (toEnum x, g')
>     Failed, modules loaded: none.
>
> There should be no ambiguity since 'toEnum' determines the type of x
> (Int), and that in turn fixes types of 0 and 2. Interestingly,
> annotating 0 or 2 with the type makes the problem go away.
>
> jhc 0.8.0 compiles this module fine.
>
> 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

Reply via email to