ByteString 有追加运算符吗?

Is there an append operator for ByteString?

对于 String 有 ++,其类型为

> :t (++)
(++) :: [a] -> [a] -> [a]

显然它在 ByteString 上不起作用,因为它不是列表。我看到了 append 函数,但是它有运算符吗?

ByteString 有一个 Semigroup 实例,所以它可以按照半群组合的通常方式组合,(<>)

相同的运算符也适用于字符串,因为 String ~ [Char][a] 有一个 Semigroup 实例,其中 (<>) = (++).

Prelude Data.ByteString.Char8> unpack $ pack "abc" <> pack "def"
"abcdef"

这里我将两个字符串转换为字节字符串,将它们合并为字节字符串,然后再转换回字符串以证明它是有效的。

concat :: [ByteString] -> ByteString

O(n) 连接字节字符串列表。