所以我的问题是在haskell中获取一个字符串并对其进行修改,以便在有某些字符的情况下将其更改为其他字符,并且我创建了一个辅助函数来执行此操作,但是在某些情况下,如果字符是“!”然后它变成'!!! 111oneone',所以我想这样做,您需要用'!! 111oneone'连接当前字符串,麻烦的是我的函数正在使用chars,但是要做到这一点,我们需要工作与该字符串一起使用时,如何将其组合在一起,即,如有必要,可以使用一个助手来修改字符,如果有“!”,则可以实现转换。
这是我到目前为止所拥有的
convert :: String -> String
convert [] = []
convert (x:xs) =
| x == '!' = !helper
| otherwise = converthelper x
答案 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
。)