2009/5/20 z_a...@163.com <z_a...@163.com>: > 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!
You can use fromIntegral to convert Integral types to other numeric types: fromIntegral :: (Integral a, Num b) => a -> b Prelude Data.Word> (fromIntegral (3 :: Int)) :: Word8 3 Watch out for overflow. Cheers, Bernie. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe