IT練習ノート

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

headを試してみる

headという関数を試してみました。

事前準備

StringをByteStringにする方法は、Hoogleで検索すると、Data.ByteString,Char8.packでした。
f:id:naotoogawa:20140419135041p:plain

Prelude> :t Data.ByteString.Char8.pack
Data.ByteString.Char8.pack
  :: String -> Data.ByteString.Internal.ByteString
Prelude> Data.ByteString.Char8.pack "foo bar buzz"
"foo bar buzz"

Data.ByteString.Char8のhead

Prelude> 
Prelude> :t Data.ByteString.Char8.head
Data.ByteString.Char8.head
  :: Data.ByteString.Internal.ByteString -> Char
Prelude> Data.ByteString.Char8.head $ Data.ByteString.Char8.pack "foo bar buzz"
'f'

Data.ByteString.headのhead

Prelude> :t Data.ByteString.head
Data.ByteString.head
  :: Data.ByteString.Internal.ByteString -> GHC.Word.Word8
Prelude> Data.ByteString.head $ Data.ByteString.Char8.pack "foo bar buzz"
102

Prelude> Data.Text.head $ Data.Text.pack "あいうえお"
'\12354'
Prelude> 

Data.Textのhead

Prelude> :t Data.Text.head
Data.Text.head :: Data.Text.Internal.Text -> Char
Prelude> Data.Text.head $ Data.Text.Encoding.decodeASCII $ Data.ByteString.Char8.pack "foo bar buzz"
'f'

普通(?)のhead

Prelude> :t head
head :: [a] -> a
Prelude> head "foo bar buzz"
'f'
Prelude> 
Prelude>