Iterando a través de una Cadena y reemplazando caracteres individuales por subcadenas en haskell

Estoy tratando de aprender algo de Haskell y lo encuentro difícil. Estoy teniendo algunos problemas con mi proyecto actual. La idea es que tengo que pasar por una Cadena y sustituir ciertos caracteres por nuevas subcadenas. Por ejemplo, si tengo una Cadena "FLXF" y quiero reemplazar cada F con una subcadena llamada "FLF", el resultado debería ser "FLFLXFLF". Ahora he estado trabajando en este problema específico durante horas. He estado leyendo sobre tipos, diferentes funciones que pueden ser útiles (mapa, pliegue, etc.) y aún no he podido resolver este problema.

El siguiente código es algunos de los diferentes intentos que he tenido:

apply :: String -> String
apply []     = []
apply (x:xs) = if (x == 'F')
               then do show "Hello"
                       apply xs
               else (apply (xs))

Este ejemplo aquí solo estaba tratando de mostrar mi saludo cada vez que encontré una 'F', pero todo lo que muestra es "", por lo que claramente no funciona. Realmente no estoy seguro de que una declaración if else sea el camino a seguir aquí. También estaba pensando que el mapa de funciones podría hacer el truco. Aquí el código en el que estaba pensando podría verse algo como esto:

map (\x y -> if y == 'F' then "FLD" else y) "FLF"

Pero eso me da un error de tipo. Así que como puedes ver estoy perdido. Disculpe mi pobre conocimiento a Haskell, pero todavía soy nuevo en eso. Realmente espero que algunos de ustedes puedan ayudarme aquí o darme un empujón en la dirección correcta. Siéntase libre de hacer preguntas si no he estado claro acerca de algo.

¡Gracias de antemano!

Juan

Respuestas a la pregunta(4)

Su respuesta a la pregunta