我正在尝试编写一个从字符串中删除特定元素的程序,但我使用的大多数东西(例如filter)仅适用于[Char]. 我真的只是不想打字"['h','e','l','l','o']"而不是"hello"。我意识到从技术上讲 aString只是一个幻想[Char],但我如何将它变成一个标准[Char]。另外,如果您有另一种方法来编写普通单词而不是数组格式,请告诉我。
我知道该filter功能,但我想知道如何过滤掉。例如:filter odd [1,2,3] = [1,3],但我想要filter (not(odd)) [1,2,3] = [2](是的,我知道有一个偶函数,但这只是一个例子)。我不知道是否有一个我不知道的单独函数,或者是否有一些我可以添加到参数中的内容。谢谢。注意:我无法使用 GHC.Utils.Misc filterOut。
现在我正在尝试创建一个基本函数来删除句子中的任何空格或逗号。
stringToIntList :: [Char] -> [Char]
stringToIntList inpt = [ a | a <- inpt, a `elem` [" ",","]]
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,我尝试过的每种类型都不起作用,如果我输入 [Char] ,它会在逗号处出现问题,如果我输入 [string] ,它会在空格处出现问题,如果我输入字符串,它就会出现问题无法识别 a 并说这是一个错误。所以我想知道是否有某种类型可以同时用作 [Char] 和 [string]。
现在我正在尝试创建一个函数来查看输入是否item已经在 中list,这是我的代码。
list :: [String]
list = ["a","b"]
listCheck :: String -> [String]
listCheck item = [(x:xs)| (x:xs) <- list, x == item]
Run Code Online (Sandbox Code Playgroud)
当前的问题是,它只能过滤输入是字符而不是字符串的情况,当我留下未声明的类型时,Haskell 制作了该函数Char -> [String],并且它工作得很好,当它不包含在内时,它返回一个空列表,并且它如果包含该项目,则返回一个包含该项目的列表。当我添加它时,String -> [String]它返回了这个错误。
Couldn't match type `[Char]' with `Char'
Expected: Char
Actual: String
Run Code Online (Sandbox Code Playgroud)
我尝试将其更改为x <- item并编译,但[item, item]每次都给出。我想知道我能做些什么来让它使用字符串而不是字符,谢谢。
我想知道如何在一个函数中获取列表中的多个元素
例如,如果我想从 list 中获取元素 1 2 3 和 4 a,我就必须输入a!!0 ++ a!!1 ++ a!!2 ++ a!!3. 这会占用大量空间,尤其是当列表名称超过一个字符时。所以我想知道我是否可以做类似的事情a!![0,1,2,3]并以更短的方式获取所有这些元素。谢谢。