采用ByteString的子串的惯用法

Dou*_*ean 8 haskell bytestring

我需要广泛使用:

slice :: Int -> Int -> ByteString -> ByteString
slice start len = take len . drop start
Run Code Online (Sandbox Code Playgroud)

两部分问题:

  1. 这已经有了名字吗?我找不到任何在Hoogle上搜索该类型的内容,但它似乎应该是一个非常普遍的需求.我也尝试过搜索(Int, Int) -> ByteString -> ByteStringflip版本相同的版本.我也试过寻找[a]版本,看看是否有一个常用名称.
  2. 有没有更好的方法来写它?

我怀疑我做错了什么,因为我强烈期望找到很多人走上同一条路,但我的谷歌没有找到任何东西.

Don*_*art 8

惯用的方式是via takedrop,它在严格的字节串上具有O(1)复杂性.

slice 没有提供,以阻止对不安全的索引操作的依赖.