tôi cần phải thực hiện sử dụng rộng rãi:cách Idiomatic để có một chuỗi con của một ByteString
slice :: Int -> Int -> ByteString -> ByteString
slice start len = take len . drop start
Hai phần câu hỏi:
- Điều này đã có một cái tên? Tôi không thể tìm thấy bất kỳ thứ gì tìm kiếm loại đó trên Hoogle, nhưng có vẻ như đó là một nhu cầu thực sự phổ biến. Tôi cũng đã thử tìm kiếm
(Int, Int) -> ByteString -> ByteString
và một số phiên bản giống nhau củaflip
. Tôi cũng đã thử tìm kiếm các phiên bản[a]
để xem có tên nào được sử dụng phổ biến không. - Có cách nào tốt hơn để viết không?
Tôi nghi ngờ rằng tôi đang làm điều gì đó sai vì tôi dự kiến sẽ tìm thấy rất nhiều người đã đi xuống cùng một con đường, nhưng google-fu của tôi không tìm thấy bất cứ điều gì.
Điều này có liên quan: http://stackoverflow.com/questions/4597820/does-haskell-have-list-slices-i-e-python – jozefg
Cảm ơn jozefg. Một trong những câu trả lời có đề cập đến "slice :: Int -> Int -> Vector a -> Vector a', do đó, đó là tiền lệ cho sự lựa chọn tên. –
Tôi khá chắc chắn theo cách của bạn là cách thành ngữ (và tốt hơn so với câu trả lời được liên kết). Nó cũng là cách hiệu quả nhất (cả hai hoạt động là O (1)). –