On Wed, May 20, 2009 at 3:40 AM, z_a...@163.com <z_a...@163.com> wrote: > Hi, friends > > rollDice :: Word8 -> IO Word8 > rollDice n = do > bracket (openFile "/dev/random" ReadMode) (hClose) > (\hd -> do v <- fmap B.unpack (B.hGet hd 1) > let v1 = Data.List.head v > return $ (v1 `mod` n) + 1) > ..... > blueIdx <- rollDice $ length [1..33] > > Couldn't match expected type `Word8' against inferred type `Int' > In the second argument of `($)', namely `length yesBlue > > I know "length [1..33]" is Int not Word8, but Word8 is enough here. > Sincerely!
Word8 is an instance of Num, so you could use Data.List.genericLength, which has the type: genericLength :: Num i => [b] -> i http://haskell.org/ghc/docs/latest/html/libraries/base/Data-List.html#26 -- Johannes Laire _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe