现在我正在尝试创建一个基本函数来删除句子中的任何空格或逗号。
stringToIntList :: [Char] -> [Char]
stringToIntList inpt = [ a | a <- inpt, a `elem` [" ",","]]
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,我尝试过的每种类型都不起作用,如果我输入 [Char] ,它会在逗号处出现问题,如果我输入 [string] ,它会在空格处出现问题,如果我输入字符串,它就会出现问题无法识别 a 并说这是一个错误。所以我想知道是否有某种类型可以同时用作 [Char] 和 [string]。
对于当前类型,定义需要是
stringToIntList inpt = [ a | a <- inpt, a `elem` [' ',',']]
Run Code Online (Sandbox Code Playgroud)
(单引号,因为这些是Char文字,而不是String!),
或者
stringToIntList inpt = [ a | a <- inpt, a `elem` " ,"]
Run Code Online (Sandbox Code Playgroud)
(使用字符串只是字符列表的事实),
或者简单地
stringToIntList = filter (`elem` " ,")
Run Code Online (Sandbox Code Playgroud)
请注意,这不会删除空格和逗号,相反,这些是它保留的唯一字符。要删除它们,您需要反转谓词:
stringToIntList = filter $ not . (`elem` " ,")
Run Code Online (Sandbox Code Playgroud)
正如iceland_jack评论的那样,这种组合实际上有一个标准函数:
stringToIntList = filter (`notElem` " ,")
Run Code Online (Sandbox Code Playgroud)
如果您确实想要,a `elem` [" ",","]那么您的函数的类型需要是
stringToIntList :: [String] -> [String]
Run Code Online (Sandbox Code Playgroud)
或同等的[[Char]] -> [[Char]]。
| 归档时间: |
|
| 查看次数: |
88 次 |
| 最近记录: |