Haskell在字符串中加倍字符

时间:2014-03-12 11:12:06

标签: string function haskell duplicates repeat

我基本上被要求转“HelloWorld!”到“HheellllooWwoorrlldd !!”使用仅使用此类型的Haskell函数

stringDub :: String -> String

我不是在寻找一个直接的答案,只是关于如何做到这一点的一些指示,因为我对Haskell完全是新手。

提前致谢。

2 个答案:

答案 0 :(得分:2)

使用模式匹配将参数分解为第一个字符和剩余字符,然后递归调用尾部的stringDub函数。您还需要检查空列表,以便在没有更多元素时结束递归。

stringDub []    = []
stringDub (h:t) = doubleItUp h ++ stringDub t
  where doubleItUp :: Char -> String
        doubleItUp = -- fill in the rest.

答案 1 :(得分:1)

或者因为字符串是列表,而列表是单子:

stringDub' :: String -> String
stringDub' xs  = do
  xs >>= \x -> [x,x]