[Haskell-cafe] How i use GHC.Word.Word8 wit Int ?

Bernie Pope florbitous at gmail.com
Tue May 19 22:16:29 EDT 2009


2009/5/20 z_axis at 163.com <z_axis at 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.


More information about the Haskell-Cafe mailing list