haskell - haskell 中有包含字符串和列表的类型吗?

标签 haskell types

现在我正在尝试创建一个基本函数,用于删除句子中的所有空格或逗号。

stringToIntList :: [Char] -> [Char]
stringToIntList inpt = [ a | a <- inpt, a `elem` [" ",","]]

我遇到的问题是,我尝试过的每一种类型都不起作用,如果我输入 [Char] 它会在逗号处出现问题,如果我输入 [string] 它会在空格处出现问题,如果我输入string 它只是不识别 a 并说这是一个错误。所以我想知道是否有某种类型可以同时用作 [Char] 和 [string]。

最佳答案

对于当前的类型,定义需要是

stringToIntList inpt = [ a | a <- inpt, a `elem` [' ',',']]

(单引号,因为这些是 Char 字面量,而不是 String 字面量!),
或者

stringToIntList inpt = [ a | a <- inpt, a `elem` " ,"]

(使用字符串只是字符列表的事实),
或者简单地

stringToIntList = filter (`elem` " ,")

请注意,这不会删除 空格和逗号,相反,这些是它保留 的唯一字符。要删除它们,您需要反转谓词:

stringToIntList = filter $ not . (`elem` " ,")

正如 Iceland_jack 所说,这个组合实际上有一个标准函数:

stringToIntList = filter (`notElem` " ,")

如果你真的想要 a `elem` ["",","] 那么你的函数类型需要是

stringToIntList :: [String] -> [String]

或等同于 [[Char]] -> [[Char]]

关于haskell - haskell 中有包含字符串和列表的类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70552752/

相关文章:

mysql - mysql中3字节数字的含义(MEDIUMINT)

types - 什么时候需要使用类型注解?

typescript - 类型谓词在 'expanded' 过滤器函数中不起作用

haskell - 从 Prolog 到 Haskell 的思考——生成真值组合列表

list - Haskell 中的元组函数

haskell - 实现一个函数来计算列表中每个元素的频率

types - 限制 Percolator 调用 ElasticSearch 中的类型

haskell - 如何将 IO Actions 变成 "pure"函数

haskell - 如何为具有多个构造函数的数据类型编写 ToJSON/FromJSON 实例?

c - 无法获取字符串的第 n 个字符