22

haskellの特定のインデックスで要素を置き換える組み込み関数はありますか?

例:

replaceAtIndex(2,"foo",["bar","bar","bar"])

与えるべき:

["bar", "bar", "foo"]

独自の関数を作成できることはわかっていますが、組み込みにする必要があるようです。

4

4 に答える 4

37

特定のインデックスで要素を更新する必要がある場合、リストはそのための最も効率的なデータ構造ではありません。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"]
于 2012-04-13T00:30:51.443 に答える
10

実際の配列はありますが、リストは実際には単独でリンクされたリストであり、要素を置き換えるという概念はそれほど明白ではありません (また、特定のインデックスで要素にアクセスすることは、リストを使用するべきではないことを示している可能性があるため、推奨される操作回避されます)。

于 2012-04-12T23:47:01.530 に答える