是否有ByteString的追加运算符?

Mat*_*ner 7 haskell concatenation bytestring

对于String ++,有类型

> :t (++)
(++) :: [a] -> [a] -> [a]
Run Code Online (Sandbox Code Playgroud)

显然它不起作用,ByteString因为它不是一个列表.我看到了这个append功能,但它有一个操作员吗?

ama*_*loy 14

ByteString有一个Monoid实例,因此它可以通过组合monoid的常用方式组合(Data.Monoid.<>).

同样的运算符也适用于字符串,因为String ~ [Char],并且[a]具有Monoid实例(<>) = (++).

Prelude Data.Monoid Data.ByteString.Char8> unpack $ pack "abc" <> pack "def"
"abcdef"
Run Code Online (Sandbox Code Playgroud)

在这里,我将两个字符串转换为ByteStrings,将它们组合为ByteStrings,然后转换回String以证明它是有效的.