Iterowanie przez łańcuch i zastępowanie pojedynczych znaków podciągami w haskell

Próbuję nauczyć się trochę Haskella i uważam to za trudne. Mam pewne problemy z moim obecnym projektem. Chodzi o to, że muszę przejść przez String i zastąpić niektóre znaki nowymi podciągami. Na przykład, jeśli mam ciąg „FLXF” i chcę zastąpić każdy F podciągiem o nazwie „FLF”, wynikiem powinno być „FLFLXFLF”. Teraz pracuję nad tym konkretnym problemem od wielu godzin. Czytałem o typach, różnych funkcjach, które mogą się przydać (mapa, fałd itd.), A jednak nie byłem w stanie rozwiązać tego problemu.

Poniższy kod to niektóre z różnych prób, które miałem:

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

Ten przykład tutaj próbowałem tylko pokazać cześć za każdym razem, gdy napotkałem „F”, ale wszystko, co pokazuje, to „”, więc to wyraźnie nie działa. Naprawdę nie jestem pewien, czy instrukcja if else jest sposobem na przejście tutaj. Myślałem też, że mapa funkcji może załatwić sprawę. Tutaj kod, o którym myślałem, mógł wyglądać mniej więcej tak:

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

ale to daje mi błąd typu. Więc jak widzisz, jestem zgubiony. Przepraszam za moją słabą wiedzę na temat Haskella, ale wciąż jestem w tym nowy. Naprawdę mam nadzieję, że niektórzy z was mogą mi pomóc tutaj lub popchnąć we właściwym kierunku. Nie wahaj się zadawać pytań, jeśli coś mi nie wiadomo.

Z góry dziękuję!

Jan

questionAnswers(4)

yourAnswerToTheQuestion