【问题标题】:Haskell doubling characters in a stringHaskell将字符串中的字符加倍
【发布时间】:2014-03-12 11:12:06
【问题描述】:

我基本上被要求打开“HelloWorld!”到“嘿嘿嘿嘿嘿嘿!!”仅使用这种类型的 Haskell 函数

stringDub :: String -> String

我不是在寻找一个直接的答案,只是一些关于如何去做的指示,因为我对 Haskell 完全陌生。

提前致谢。

【问题讨论】:

    标签: string function haskell duplicates repeat


    【解决方案1】:

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

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

    【讨论】:

    • 有一些指针会更有意义,非常感谢
    • 如果你喜欢高阶的东西,那么stringDub = concatMap doubleItUp。但最好先学会明确地编写递归。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-24
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 2012-06-13
      • 1970-01-01
      相关资源
      最近更新 更多