Возможный дубликат:
Перебор строки и замена отдельных символов подстроками в haskell
Я пытаюсь реализовать функцию, которая просматривает строку ([символы]) и проверяет каждую букву, следует ли заменить эту букву другой строкой. Например, у нас может быть [Chars], состоящий из «XYF» и правил, которые говорят «X = HYHY», «Y = OO», тогда наш вывод должен стать «HYHYOOF».
Я хочу использовать следующие два типа, которые я определил:
type Letters = [Char]
data Rule = Rule Char Letters deriving Show
Моя идея состоит в том, что функция должна выглядеть примерно так, как показано ниже, с использованием охранников. Однако проблема в том, что я не могу найти никакой информации о том, как должен выглядеть рекурсивный вызов, когда я хочу просмотреть все свои правила, чтобы увидеть, подходит ли какое-либо из них к текущей букве x. Я надеюсь, что кто-нибудь может дать несколько советов о том, как идет запись.
apply :: Letters -> [Rule] -> Letters
apply _ _ = []
apply (x:xs) (Rule t r:rs)
| x /= t = apply x (Rule t rs)
| x == t = r++rs:x
| otherwise =