
20 May
2009
20 May
'09
2:16 a.m.
2009/5/20 z_axis@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.