Haskell字符串替换

2D3*_*D4D 0 string haskell replace

如何用字符串中的多个字符替换字符.我可以用下面的字符替换另一个字符:

  replaceO [] = []
  replaceO (x:xs) =
     if x == '('
     then '\n' : replaceO xs
     else x : replaceO xs
Run Code Online (Sandbox Code Playgroud)

但是我想用'\'替换'\n\t\t',而不只是'\n'.

---------- UPDATE --------------根据下面的答案,我可以使一个函数接受一个字符串并返回一个这样的字符串:

ReplaceFun str :: String -> String
ReplaceFun str = do
    concatMap (\str -> if str == '.' then "foo" else [str])
Run Code Online (Sandbox Code Playgroud)

这不起作用,有人能指出我的错误吗?我是Haskell的新手.

这是我对嵌套缩进的看法:

replaceO (x:xs) n l =
    if x == '('
    then "\n" ++ (showTabs n "-") ++ replaceO xs (n + 1) 'l'
    else
        if x == ')'
        then "\n" ++ (showTabs n "-") ++ replaceO xs (n - 1) 'l'
        else x : replaceO xs n 'l'
Run Code Online (Sandbox Code Playgroud)

Car*_*orc 5

只是用 concatMap

Prelude> concatMap (\x -> if x == '.' then "foo" else [x]) "example..."
"examplefoofoofoo"
Run Code Online (Sandbox Code Playgroud)