【发布时间】:2018-02-21 09:38:27
【问题描述】:
对于字符串有++,它有类型
> :t (++)
(++) :: [a] -> [a] -> [a]
显然它不适用于ByteString,因为它不是一个列表。我看到了append 函数,但是有它的运算符吗?
【问题讨论】:
-
您可以使用反引号,从而使用
bs1 `append` bs2
标签: haskell concatenation bytestring
对于字符串有++,它有类型
> :t (++)
(++) :: [a] -> [a] -> [a]
显然它不适用于ByteString,因为它不是一个列表。我看到了append 函数,但是有它的运算符吗?
【问题讨论】:
bs1 `append` bs2
标签: haskell concatenation bytestring
ByteString 有一个 Semigroup 实例,因此它可以按照通常的 semigroup 组合方式与(<>) 组合。
同样的运算符也适用于字符串,因为 String ~ [Char] 和 [a] 有一个 Semigroup 实例,其中 (<>) = (++)。
Prelude Data.ByteString.Char8> unpack $ pack "abc" <> pack "def"
"abcdef"
这里我将两个Strings转换为ByteStrings,将它们组合为ByteStrings,然后再转换回String来证明它是有效的。
【讨论】:
concat :: [ByteString] -> ByteString
O(n) 连接一个字节字符串列表。
【讨论】: