【问题标题】:Is there an append operator for ByteString?ByteString 是否有附加运算符?
【发布时间】:2018-02-21 09:38:27
【问题描述】:

对于字符串有++,它有类型

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

显然它不适用于ByteString,因为它不是一个列表。我看到了append 函数,但是有它的运算符吗?

【问题讨论】:

  • 您可以使用反引号,从而使用bs1 `append` bs2

标签: haskell concatenation bytestring


【解决方案1】:

ByteString 有一个 Semigroup 实例,因此它可以按照通常的 semigroup 组合方式与(<>) 组合。

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

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

这里我将两个Strings转换为ByteStrings,将它们组合为ByteStrings,然后再转换回String来证明它是有效的。

【讨论】:

    【解决方案2】:

    concat :: [ByteString] -> ByteString

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

    【讨论】:

    • 您的答案可能是对现有答案的有用补充,但它肯定也会受益于叙述性解释。
    猜你喜欢
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 2014-10-12
    • 2016-02-12
    • 2014-12-29
    • 2011-08-31
    • 2012-02-08
    • 2017-01-09
    相关资源
    最近更新 更多