Durch einen String iterieren und einzelne Zeichen durch Teilzeichenfolgen in haskell ersetzen

Ich versuche Haskell zu lernen und finde es schwierig. Ich habe einige Probleme mit meinem aktuellen Projekt. Die Idee ist, dass ich einen String durchgehen und bestimmte Zeichen durch neue Teilstrings ersetzen muss. Wenn ich zum Beispiel einen String "FLXF" habe und jedes F durch einen Teilstring mit dem Namen "FLF" ersetzen möchte, sollte das Ergebnis "FLFLXFLF" sein. Jetzt habe ich stundenlang an diesem speziellen Problem gearbeitet. Ich habe mich über Typen und verschiedene Funktionen informiert, die sich als nützlich erweisen könnten (Karte, Falz usw.), und konnte dieses Problem dennoch nicht lösen.

Der folgende Code ist einige der verschiedenen Versuche, die ich gehabt habe:

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

In diesem Beispiel hier habe ich nur versucht, jedes Mal Hallo zu zeigen, wenn ich auf ein 'F' gestoßen bin, aber alles, was es zeigt, ist "". Das funktioniert also eindeutig nicht. Ich bin mir wirklich nicht sicher, ob eine if else-Anweisung der richtige Weg ist. Ich dachte auch, dass die Funktionskarte den Trick tun könnte. Hier könnte der Code, über den ich nachdachte, ungefähr so ​​aussehen:

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

aber das gibt mir einen Tippfehler. Wie Sie sehen, bin ich verloren. Entschuldigen Sie mein schlechtes Wissen für Haskell, aber ich bin noch neu darin. Ich hoffe wirklich, dass einige von Ihnen mir hier raushelfen oder mir einen Schub in die richtige Richtung geben können. Fühlen Sie sich frei, Fragen zu stellen, wenn mir etwas unklar ist.

Danke im Voraus!

John

Antworten auf die Frage(4)

Ihre Antwort auf die Frage