IT練習ノート

IT関連で調べたこと(実際は嵌ったこと)を書いています。

HaskellでIntからCharへの変換

その(1)

Prelude> :t Data.Char.chr
Data.Char.chr :: Int -> Char
Prelude> Data.Char.chr 70
'F'
Prelude> Data.Char.chr 102
'f'

その(2)

Prelude> :t Data.Binary.Put.putWord8
Data.Binary.Put.putWord8 :: GHC.Word.Word8 -> Data.Binary.Put.Put
Prelude> :t Data.Binary.Put.runPut
Data.Binary.Put.runPut :: Data.Binary.Put.Put -> Data.ByteString.Lazy.Internal.ByteString
Prelude> :t (Data.Binary.Put.runPut . Data.Binary.Put.putWord8 )
(Data.Binary.Put.runPut . Data.Binary.Put.putWord8 ) :: GHC.Word.Word8 -> Data.ByteString.Lazy.Internal.ByteString
Prelude> 
Prelude> (Data.Binary.Put.runPut . Data.Binary.Put.putWord8 ) 70
"F"
Prelude> (Data.Binary.Put.runPut . Data.Binary.Put.putWord8 ) 102
"f"
Prelude> 


ちなみにこれはエラー

Prelude> :t Data.Binary.Put.runPut $ Data.Binary.Put.putWord8

<interactive>:1:26:
    Couldn't match type `GHC.Word.Word8 -> Data.Binary.Put.Put'
                  with `Data.Binary.Put.PutM ()'
    Expected type: Data.Binary.Put.Put
      Actual type: GHC.Word.Word8 -> Data.Binary.Put.Put
    In the second argument of `($)', namely `Data.Binary.Put.putWord8'
    In the expression:
      Data.Binary.Put.runPut $ Data.Binary.Put.putWord8