0

重複の可能性:
単一のリスト内の要素のリストのリストを更新しますか?

以下に示すような値のリストがあります。

[ ["Off","Off","Off"],
  ["Off","Off","Off"],
  ["Off","Off","Off"] ]

そして以下を返したい:

[ ["Off","Off","Off"],
  ["Off",*"On"*,"Off"],
  ["Off","Off","Off"] ]

個々のリストだけで機能する次の関数があります。

replaceAll 0 newValue (x:xs) = newValue:xs
replaceAll b newValue (x:xs) = x:replaceAll (b-1) newValue xs

ただし、リスト内でこれらの複数のリストを操作するのに問題があるようです。これら 2 つのリスト (つまり、別のリスト内のリスト) を処理する関数をどのように考案すればよいでしょうか?

まだ (x:xs) の全体について頭を悩ませようとしています。

4

1 に答える 1

3

リストは、この種のものに最適な構造ではありません。しかし、とにかくリストを使って作業しましょう。

replaceAll置換値を提供する代わりに、古いものを新しいものに置き換える方法を指定する関数を提供するように調整します。

replaceAll 0 f (x:xs) = f x:xs -- Here's where we transform x using f
replaceAll b f (x:xs) = x:replaceAll (b-1) f xs

これで、それ自体を使用replaceAllして、行列の特定の行で必要な置換を実行できます。

test = replaceAll 1 (replaceAll 1 (const "On")) yourList

このconst "On"関数が使用されるのは、特定の要素に到達したときに、それを変換する必要がなくなったときに、それを。に置き換えるだけだから"On"です。変換したい個々の行のビット。

于 2011-05-02T18:48:45.670 に答える