haskell / haskell/bytestring

Iron out API discrepancies

Open
#289 14 comments 0 reactions 0 assignees View on GitHub
pr-welcome
Dominant language
Haskell
Stars
301
Forks
144
Avg merge
7d 22h
Merged PRs (30d)
1

Description

Missing for lazy bytestrings:

* `unfoldrN` (see also #128)
* `isInfixOf`, `breakSubstring` (see #30 and #307)
* ~~`foldr'` and `foldr1'` (not that strict folds make tremendously much sense for lazy structures, but we already have `foldl'` and `foldl1'` in place) (see #373)~~
* ~~`scanl1`, `scanr` and `scanr1` (see #373)~~
* ~~`takeEnd`, `dropEnd`, `takeWhileEnd`, `dropWhileEnd`, `spanEnd` and `breakEnd` (see #306).~~

Missing both for strict and lazy bytestrings:

* `replace :: ByteString -> ByteString -> ByteString -> ByteString` (lazy variant would require `breakSubstring` or similar first, so see #307)
* `splitOn :: ByteString -> ByteString -> [ByteString]` (see #100)

~~There are minor but annoying differences between API provided by `Data.ByteString`, `Data.ByteString.Char8`, `Data.ByteString.Lazy`, `Data.ByteString.Lazy.Char8`. Plus we are missing certain encoding-agnostic functions available for `Text`, such as `compareLength`, `replace`, `splitOn`, etc.~~

~~A good starting point (even if a bit outdated) is https://github.com/haskell-backpack/backpack-str/tree/master/str-sig#feature-matrix~~

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.