cons package:bytestring
O(n) cons is analogous to (:) for lists, but of
different complexity, as it requires making a copy.
O(n) cons is analogous to (:) for lists, but of
different complexity, as it requires a memcpy.
O(1) cons is analogous to
(:) for lists.
O(1) cons is analogous to
(:) for lists.
O(n) cons is analogous to (:) for lists.
Note: copies the entire byte array
O(1) Unlike
cons,
cons' is strict in the
ByteString that we are consing onto. More precisely, it forces the
head and the first chunk. It does this because, for space efficiency,
it may coalesce the new byte onto the first 'chunk' rather than
starting a new 'chunk'.
So that means you can't use a lazy recursive contruction like this:
let xs = cons' c xs in xs
You can however use
cons, as well as
repeat and
cycle, to build infinite lazy ByteStrings.
O(1) Unlike
cons,
cons' is strict in the
ByteString that we are consing onto. More precisely, it forces the
head and the first chunk. It does this because, for space efficiency,
it may coalesce the new byte onto the first 'chunk' rather than
starting a new 'chunk'.
So that means you can't use a lazy recursive contruction like this:
let xs = cons' c xs in xs
You can however use
cons, as well as
repeat and
cycle, to build infinite lazy ByteStrings.
O(1) Extract the
head and
tail of a ByteString,
returning
Nothing if it is empty.
O(1) Extract the head and tail of a ByteString, returning
Nothing if it is empty.
O(n) Extract the
head and
tail of a
ShortByteString, returning
Nothing if it is empty.