我被困在一个练习中,我需要一个列表的字母。 示例:
[A,23,XY,4] the resultant list should be [23,4]
我正在考虑使用递归,但我如何进行验证,如果是字母或没有。 我读了splitOn,但是我有同样的问题,我写的是verificate吗?
splitOn (...) [A,4,d,1]
(...) -> what i put here?
例如在Java中,退出方法isDigit,在haskell中存在这样的任何方法吗?
答案 0 :(得分:4)
列表类型错误。
[A,23,XY,4]
这在Haskell中没有任何意义......至少有两个问题。
以大写字母开头的关键字在Haskell中用于类型(例如Int
或String
)。
不允许使用混合类型列表。
话虽如此,我将从您的问题中猜测您打算使用Char
的列表。
['A', '2', 'X', '4']
(注意 - 在Haskell中,Char
的列表只是一个字符串,所以这也可以写成“A2X4”)
如果是这种情况,您可以使用一些标准函数删除字母字符。
filter (not . isAlpha) ['A', '2', 'X', '4']
另一方面,如果您可能还需要过滤字符串列表。
["A", "23", "XY", "4"]
这可以类似地完成
filter (not . all isAlpha) ["A", "23", "XY", "4"]
过滤掉所有字母字符或
的字符串filter (not . any isAlpha) ["A", "23", "XY", "4"]
过滤掉任何包含任何字母字符的字符串。
注意,您需要导入Data.Char
才能使这些代码段有效。