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