在Haskell中结合字符串修改和连接

时间:2019-03-25 19:07:56

标签: list haskell

所以我的问题是在haskell中获取一个字符串并对其进行修改,以便在有某些字符的情况下将其更改为其他字符,并且我创建了一个辅助函数来执行此操作,但是在某些情况下,如果字符是“!”然后它变成'!!! 111oneone',所以我想这样做,您需要用'!! 111oneone'连接当前字符串,麻烦的是我的函数正在使用chars,但是要做到这一点,我们需要工作与该字符串一起使用时,如何将其组合在一起,即,如有必要,可以使用一个助手来修改字符,如果有“!”,则可以实现转换。

这是我到目前为止所拥有的

convert :: String -> String
convert [] = []
convert (x:xs) =
| x == '!'  = !helper
| otherwise = converthelper x

1 个答案:

答案 0 :(得分:4)

假设您的助手就像

sudo gedit /etc/apt/sources.list.d/nodesource.list

然后,您可以使用curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - sudo sh -c "echo deb https://deb.nodesource.com/node_10.x cosmic main /etc/apt/sources.list.d/nodesource.list" sudo apt-get update sudo apt-get install nodejs helper :: Char -> String helper '!' = "!!!111oneone" helper c = [c] 映射到字符串中的每个字符,然后将结果串联到单个字符串中。

concatMap

诀窍在于,您的助手会将每个字符提升为字符列表;大多数字符只是变成了一个字符的字符串,而helper则变成了更多的字符。

(请注意,convert :: String -> String convert = concatMap helper -- convert msg = concatMap helper msg 构成列表的!实例的基础。您也可以编写concatMap。)