23

ByteString私はそのような言葉に分割したい:

import qualified Data.ByteString as BS

main = do
    input <- BS.getLine
    let xs = BS.split ' ' input 

Word8しかし、GHCは文字リテラルをそれ自体に変換できないように見えるので、次のようになりました。

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

Hoogleは、型シグネチャがの何も検出せず、Char -> Word8無効Word.Word8 ' 'な型コンストラクターです。それを修正する方法について何かアイデアはありますか?

4

5 に答える 5

34

Data.ByteString.Char8モジュールを使用すると、バイト文字列の値をとして扱うことができWord8ますChar。ただ

import qualified Data.ByteString.Char8 as C

次に、たとえばC.splitを参照してください。これは内部では同じバイト文字列ですが、Charバイト/ASCII解析を便利にするために-指向の関数が提供されています。

于 2012-05-16T17:20:33.187 に答える
17

本当にData.ByteString (Data.ByteString.Char8 ではない) が必要な場合は、Word8 から Char への変換のために Data.ByteString 自体が行うことを行うことができます。

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 ()
于 2013-03-19T17:28:47.930 に答える
2

Char -> Word8シンプルな基本ライブラリを探している人:

import Data.Word

charToWord8 :: Char -> Word8
charToWord8 = toEnum . fromEnum
于 2019-02-03T16:24:03.563 に答える