Haskell如何将Char转换为Word8

And*_*rew 20 haskell bytestring

我想分成ByteString这样的话:

import qualified Data.ByteString as BS

main = do
    input <- BS.getLine
    let xs = BS.split ' ' input 
Run Code Online (Sandbox Code Playgroud)

但似乎GHC无法将字符文字转换为Word8自身,所以我得到:

Couldn't match expected type `GHC.Word.Word8'
            with actual type `Char'
In the first argument of `BS.split', namely ' '
In the expression: BS.split ' ' input
Run Code Online (Sandbox Code Playgroud)

Hoogle没有找到类型签名的任何内容,Char -> Word8并且Word.Word8 ' '是无效的类型构造函数.关于如何修复它的任何想法?

Don*_*art 33

Data.ByteString.Char8模块允许你将Word8在字节串的值Char.只是

import qualified Data.ByteString.Char8 as C
Run Code Online (Sandbox Code Playgroud)

然后参考例如C.split.它的内部字节串相同,但是Char提供了面向字节/ ascii解析的方向函数.


grw*_*wlf 17

如果你真的需要Data.ByteString(不是Data.ByteString.Char8),你可以做Data.ByteString本身在Word8和Char之间转换的做法:

import qualified Data.ByteString as BS
import qualified Data.ByteString.Internal as BS (c2w, w2c)

main = do
    input <- BS.getLine
    let xs = BS.split (BS.c2w ' ') input 
    return ()
Run Code Online (Sandbox Code Playgroud)