Приведенный ниже код возвращает список строк, но я хочу, чтобы он работал в нескольких случаях.Проблема в том, что я не могу создать такой же точный результат с рекурсией.Программа возвращает следующий результат:
replaceTabs 6 ["\thello world"]
=> [" hello world"]
Теперь это должно работать с более длинным списком, таким как:
replaceTabs 6 ["asd dsa","\thello world"]
=> ["asd dsa"," hello world"]
Простой конкат не работает, потому что он возвращает неопределенный образец.
replaceTab' :: Int -> [[Char]] -> [Char]
replaceTab' n [[x]] =
if x == '\t' then replicate n ' '
else [x]
replaceTabs :: Int -> [String]-> [String]
replaceTabs n [""] = [""]
replaceTabs n (x:xs) = (return . concat $ [replaceTab' n [a] | a <- (map (:[]) (x))])