
Use one of the Char8 modules, depending on whether you want a strict
or lazy bytestring:
-----------------------------------------------------------------------
import qualified Data.ByteString.Lazy.Char8 as BS
message :: BS.ByteString
message = BS.pack "SOME STRING"
-----------------------------------------------------------------------
See the docs at:
http://hackage.haskell.org/packages/archive/bytestring/0.9.1.7/doc/html/Data...
http://hackage.haskell.org/packages/archive/bytestring/0.9.1.7/doc/html/Data...
mapping over putWord8 is much slower than putting a single bytestring;
if you want to put a string, pack it first:
-----------------------------------------------------------------------
putString :: String -> Put
putString str = putLazyByteString (BS.pack str)
-- alternative: probably faster
import qualified Data.ByteString.Char8 as B
putString :: String -> Put
putString str = putByteString (B.pack str)
-----------------------------------------------------------------------
On Sat, Nov 6, 2010 at 05:30, C K Kashyap
Hi, I was trying to put a String in a ByteString
import qualified Data.ByteString.Lazy as BS message :: BS.ByteString message = runPut $ do let string="SOME STRING" map (putWord8.fromIntegral.ord) string -- this ofcourse generates [Put]
How can I convert the list of Put's such that it could be used in the Put monad?
For now I used the workaround of first converting the string to ByteString like this -
stringToByteString :: String -> BS.ByteString stringToByteString str = BS.pack (map (fromIntegral.ord) str)
and then using putLazyByteString inside the Put monad.
-- Regards, Kashyap _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe