[Haskell-cafe] Re: Occurs check error, help!

adamtheturtle kill2thrill at hotmail.com
Sun Mar 21 22:49:33 EDT 2010

boblettoj <boblettoj99 <at> msn.com> writes:

> Haha, much better now!
> Thanks for all your help, it's working great!

Just tried the code
shuffle :: Int -> [a] -> [a]
shuffle i [] = []
shuffle i cards = [(cards!!i) : shuffle (fst pair) (delete (cards!!i)
        where pair = randomR (0, 51) (mkStdGen 42)

and I get:

Could not deduce (Eq a) from the context ()
      arising from a use of `delete' at Cards.hs:(23,51)-(24,8)
    Possible fix:
      add (Eq a) to the context of the type signature for `shuffle'
    In the second argument of `shuffle', namely
        `(delete (cards !! i) cards)'
    In the second argument of `(:)', namely
        `shuffle (fst pair) (delete (cards !! i) cards)'
    In the expression:
          (cards !! i) : shuffle (fst pair) (delete (cards !! i) cards)
Failed, modules loaded: none.

Any ideas?

More information about the Haskell-Cafe mailing list