我想刪除字符串中的尾隨字符'T',同時用與第一個字符串相同的字符數來縮短關聯的字符串。爲什麼Haskell Data.ByteString.Lazy.Char8沒有解壓縮函數?
我試過如下:
{-# LANGUAGE OverloadedStrings #-}
import qualified Data.ByteString.Lazy.Char8 as C
zipTrim s q
| C.null s = (C.empty, C.empty)
| C.head (last $ C.group s) == 'T' =
unzip (C.zip (C.concat $ init $ C.group s) q)
| otherwise = (s, q)
然而,unzip
返回我一雙[Char]
,而不是一對Bytestring
。
的非懶版本有一個返回一對Bytestring
一個解壓縮功能: https://hackage.haskell.org/package/bytestring-0.10.8.1/docs/Data-ByteString-Char8.html#v:unzip
爲什麼沒有懶惰的版本類似的功能?
(隨時提出對我的合作修剪問題更好的解決方案。我想有一些不算太慢。)
也許是因爲懶惰的字節串是如何懶惰並不是很清楚。您可以將嚴格的字節串轉換爲懶惰的字節串。 –
可能沒有什麼好的理由;我猜想有人忘了。 http://hackage.haskell.org/package/bytestring-0.10.8.1/docs/src/Data-ByteString-Lazy.html#unzip – jberryman