是否有任何内置函数来替换haskell中给定索引处的元素?
例:
replaceAtIndex(2,"foo",["bar","bar","bar"])
应该给:
["bar", "bar", "foo"]
Run Code Online (Sandbox Code Playgroud)
我知道我可以创建自己的功能,但它似乎应该是内置的.
ham*_*mar 33
如果需要更新特定索引处的元素,则列表不是最有效的数据结构.您可能想要考虑使用Seqfrom Data.Sequence,在这种情况下,您正在寻找的功能是update :: Int -> a -> Seq a -> Seq a.
> import Data.Sequence
> update 2 "foo" $ fromList ["bar", "bar", "bar"]
fromList ["bar","bar","foo"]
Run Code Online (Sandbox Code Playgroud)
mar*_*nus 12
据我所知(并且可以找到),它默认不存在.但是,存在splitAt于Data.List:
replaceAtIndex n item ls = a ++ (item:b) where (a, (_:b)) = splitAt n ls
Run Code Online (Sandbox Code Playgroud)
这是O(N).如果你发现自己做了很多,请查看另一种数据类型,例如array.
| 归档时间: |
|
| 查看次数: |
16146 次 |
| 最近记录: |