我已经设法使用Parsec来解析一个String,但是无法用ByteString来做同样的事情.
如何让Parsec与ByteStrings一起使用而无需手动将它们转换为字符串?
我觉得这不难实现.我错了吗?(我是Haskell的新手.^^)
谢谢!
Data.ByteString.hGetContents的文档说
与hGet一样,文件中的字符串表示形式假定为ISO-8859-1.
为什么它必须"假设"任何关于"文件中的字符串表示"的内容?数据不一定是字符串或编码文本.如果我想要处理编码文本,我会使用Data.Text或者Data.ByteString.Char8.我认为ByteString的重点是数据是作为8位字节的列表处理的,而不是文本字符.假设ISO-8859-1的影响是什么?
我不能让GHCi或GHC打印unicode代码点221A(sqrt符号:√).
我不认为这是我的shell,因为我可以得到ruby:
irb> puts "\u221A"
?
Run Code Online (Sandbox Code Playgroud)
GHC/GHCi是另一个问题:
ghci> putStrLn "\8730"
ghci> withFile "temp.out" WriteMode $ flip hPutStrLn "\8730"
ghci> readFile "temp.out"
"\SUB\n"
Run Code Online (Sandbox Code Playgroud)
那么我做错了什么?
(GHC v6.l0.3)