Reemplazar elementos de lista individuales en Haskell?

Tengo una lista de elementos y deseo actualizarlos:

de esto:["Off","Off","Off","Off"]

a esto:["Off","Off","On","Off"]

Como soy algo nuevo en Haskell, he estado usando(x:xs)!!y para extraer y actualizar componentes individuales utilizando la función:

replace y z [] = []
replace y z (x:xs)
  | x==y           = z:replace y z xs
  | otherwise      = x:replace y z xs

y luego ingresando lo siguiente en ghci:(replace "Off" "On" ["Off",'Off","Off","Off"]) !! 2

Me sale lo siguiente:"On"

Parece que puedo extraer y convertir elementos de una lista, pero parece que no puedo obtener una lista con el único elemento convertido.

e agradecería cualquier ayuda con respecto a este asunto.

Respuestas a la pregunta(9)

Su respuesta a la pregunta