
On 03/08/2016 01:14 AM, Gabriel Gonzalez wrote:
I would like to propose adding `take`/`drop`/`splitAt` to both `Data.Map` and `Data.Set` as originally requested in:
https://github.com/haskell/containers/issues/135 https://github.com/haskell/containers/issues/135
The motivation behind this proposal is three-fold:
* for convenience - these functions are commonly used to implement pagination or previews of maps/sets * for type accuracy - the public API impose an unnecessary `Ord` constraint * for efficiency - these can be implemented more efficiently using the internal API
Currently the only way you can implement this functionality via the public API is to use `lookupIndex`/`elemAt` + `split`. For example, one way to implement `Data.Set.take` is:
+1 It also seems like a more idiomatic Haskell API to have "take", "drop", "splitAt" operations rather than[1] "lookupIndex/elemAt" + "split". [1] I realize the latter aren't going away. Regards,