Iterando através de uma String e substituindo caracteres únicos por substrings em haskell

Estou tentando aprender um pouco de Haskell e acho difícil. Estou tendo alguns problemas com meu projeto atual. A ideia é que eu tenha que passar por um String e substituir certos chars por novos substrings. Por exemplo, se eu tenho uma String "FLXF" e eu quero substituir cada F com uma substring chamada "FLF", o resultado deve ser "FLFLXFLF". Agora eu tenho trabalhado neste problema específico por horas. Eu tenho lido sobre tipos, funções diferentes que podem vir a calhar (mapear, dobrar, etc) e ainda não fui capaz de resolver este problema.

O código abaixo é algumas das diferentes tentativas que tive:

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

Este exemplo aqui eu estava apenas tentando mostrar olá toda vez que eu encontrei um 'F', mas tudo que ele mostra é "", então isso claramente não funciona. Eu realmente não tenho certeza se uma declaração é o caminho a percorrer aqui. Eu também estava pensando que o mapa de funções poderia fazer o truque. Aqui o código que eu estava pensando poderia ser algo como isto:

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

mas isso me dá um erro de tipo. Então, como você pode ver, estou perdido. Com licença, meu pobre conhecimento para Haskell, mas ainda sou novo nisso. Eu realmente espero que alguns de vocês possam me ajudar aqui ou me dar um empurrão na direção certa. Sinta-se à vontade para fazer perguntas se não tiver certeza de alguma coisa.

Agradeço antecipadamente!

John