Haskell如何创建Word8?

时间:2012-01-23 01:47:47

标签: string haskell bytestring

我想编写一个简单的函数,使用ByteString作为分隔符将[ByteString]拆分为'\n'。我的尝试:

import Data.ByteString

listize :: ByteString -> [ByteString]
listize xs = Data.ByteString.splitWith (=='\n') xs

这会引发错误,因为'\n'Char而不是Word8,这是Data.ByteString.splitWith所期待的。

如何将此简单字符转换为Word8将使用的ByteString

1 个答案:

答案 0 :(得分:14)

您可以使用数字文字10,但如果您想转换字符文字,可以使用fromIntegral (ord '\n')(转换fromIntegral需要Int ord返回Word8)。您必须为Data.Char导入ord

您还可以导入Data.ByteString.Char8,其中提供了在同一Char数据类型上使用Word8而不是ByteString的功能。 (实际上,它具有lines功能,可以完全按照您的要求进行操作。)但是,这通常是推荐,因为ByteString s 不会存储Unicode代码点(这是Char代表的),而是原始八位字节(即Word8 s)。

如果您正在处理文字数据,则应考虑使用Text代替ByteString