haskellの特定のインデックスで要素を置き換える組み込み関数はありますか?
例:
replaceAtIndex(2,"foo",["bar","bar","bar"])
与えるべき:
["bar", "bar", "foo"]
独自の関数を作成できることはわかっていますが、組み込みにする必要があるようです。
特定のインデックスで要素を更新する必要がある場合、リストはそのための最も効率的なデータ構造ではありません。Seq
代わりにfromの使用を検討することをお勧めしData.Sequence
ます。その場合、探している関数はですupdate :: Int -> a -> Seq a -> Seq a
。
> import Data.Sequence
> update 2 "foo" $ fromList ["bar", "bar", "bar"]
fromList ["bar","bar","foo"]
実際の配列はありますが、リストは実際には単独でリンクされたリストであり、要素を置き換えるという概念はそれほど明白ではありません (また、特定のインデックスで要素にアクセスすることは、リストを使用するべきではないことを示している可能性があるため、推奨される操作回避されます)。