4
main :: IO ()
main = do 
    let a = ("teeeeeeeeeeeeest","teeeeeeeeeeeest")
    b <- app a
    print b

アプリは([char]、[char])ではな​​く(bytestring、bytestring)を期待します。どうすれば変換できますか?

4

2 に答える 2

10

ASCII値のみが含まれている場合、または各の最後の8ビットのみに関心がある場合は、 StringsをByteStringsに変換できますData.ByteString.Char8.pack(またはその遅延ByteStringバージョン)。StringChar

import qualified Data.ByteString.Char8 as C
main :: IO ()
main = do 
    let a = ("teeeeeeeeeeeeest","teeeeeeeeeeeest")
    b <- app $ (\(x,y) -> (C.pack x, C.pack y)) a
    print b

String非ASCIIが含まれてCharいて、最後の8ビット以外に関心がある場合は、などの他のエンコーディングが必要になりますData.ByteString.UTF8.fromString

于 2012-07-27T10:00:40.097 に答える
6

あなたは試すことができます:

import qualified Data.ByteString.Char8 as B --to prevent name clash with Prelude
B.pack "Hello, world"

多くの便利な関数がここにあります:

http://www.haskell.org/ghc/docs/latest/html/libraries/bytestring/Data-ByteString-Char8.html

Data.ByteString.Lazy.Char8 怠惰なバイト文字列にも使用できます

http://hackage.haskell.org/packages/archive/bytestring/latest/doc/html/Data-ByteString-Lazy-Char8.html#v:pack

于 2012-07-27T10:08:12.983 に答える