如何编写haskell函数,该函数复制字符串中给定字符的每次出现

时间:2016-12-07 04:04:26

标签: haskell

import Data.List
import System.IO

import Data.STRef
import Data.Char

main = do
         let x = dup 'a' "the cat in the hat has a fat head"
         putStrLn $ show $ x

这是我到目前为止,我不知道从哪里开始

3 个答案:

答案 0 :(得分:1)

编写函数以使用列表

时,可以使用:
  • x:xs模式匹配列表到标题x和尾xs
  • x:xsxxs
  • 构建列表

有很多方法可以编写dup函数,这是我使用guard |

的快速解决方案
dup :: Char -> String -> String
dup c [] = []
dup c (x:xs)
  | c == x    =  x:x:dup c xs
  | otherwise =  x:dup c xs

main = do 
  let x = dup 'a' "the cat in the hat has a fat head"
  putStrLn x

the caat in the haat haas aa faat heaad

答案 1 :(得分:1)

您可以使用列表理解来解决它。

dup :: Char -> [Char] -> [Char]
dup c string = [ ss | s <- string, ss <- if c == s then [c] ++ [s] else [s]]

答案 2 :(得分:0)

这么多方法;),例如

dup :: Char -> String -> String
dup charToDup s = concatMap dupC s
  where dupC c = if c == charToDup then replicate 2 c
                 else [c]