Jan*_*erg 6 containers haskell sequence
Data.Sequence拥有takeWhileR和dropWhileR用于高效解构Seq从右侧秒.然而takeR,dropR和splitAtR是显眼.take并drop以实施方式实施splitAt.那么,手指树不能承认效率splitAtR还是因为某些其他原因而不包含此功能?
(单独但有些相关的问题:dropR在viewR表现得相当好的情况下,天真的实施会不会很好?)
这个问题是基于containers-0.5.6.3.
length是O(1),因此splitAt足以以有效的方式定义您需要的一切.
splitAtR i s = splitAt (length s - i) s
takeR i s = snd $ splitAtR i s
dropR i s = fst $ splitAtR i s
Run Code Online (Sandbox Code Playgroud)
根据文档,splitAt成本O(log(min(i,length s-i))),所以通过对称splitAtR成本相同(只是一个额外的+O(1),我们可以忽略).
| 归档时间: |
|
| 查看次数: |
90 次 |
| 最近记录: |