我需要做大量使用的一個子:慣用的方式,採取一個字節串
slice :: Int -> Int -> ByteString -> ByteString
slice start len = take len . drop start
問題的兩個部分:
- 這是否已經有名字嗎?我無法在Hoogle上找到任何類型的搜索,但它似乎應該是一個非常普遍的需求。我也試過搜索
(Int, Int) -> ByteString -> ByteString
和一些flip
的d版本。我也試過尋找[a]
版本來查看是否有一個常用名字。 - 有沒有更好的方法來寫它?
我很懷疑自己做錯了什麼,因爲我強烈期望找到很多人走上了同一條路,但我的谷歌搜索沒有找到任何東西。
這是相關的:http://stackoverflow.com/questions/4597820/does-haskell-have-list-slices-i-e-python – jozefg
謝謝jozefg。其中一個答案提到'slice :: Int - > Int - > Vector a - > Vector a',這是名稱選擇的先例。 –
我很確定你的方式是慣用的方式(並且比鏈接的答案更好)。這也是最有效的方式(兩種操作都是O(1))。 –