我基本上被要求转“HelloWorld!”到“HheellllooWwoorrlldd !!”使用仅使用此类型的Haskell函数
stringDub :: String -> String
我不是在寻找一个直接的答案,只是关于如何做到这一点的一些指示,因为我对Haskell完全是新手。
提前致谢。
答案 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]