消除列表的字母

时间:2014-11-27 19:55:04

标签: list haskell split

我被困在一个练习中,我需要一个列表的字母。 示例:

[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中存在这样的任何方法吗?

1 个答案:

答案 0 :(得分:4)

列表类型错误。

[A,23,XY,4]

这在Haskell中没有任何意义......至少有两个问题。

  1. 以大写字母开头的关键字在Haskell中用于类型(例如IntString)。

  2. 不允许使用混合类型列表。

  3. 话虽如此,我将从您的问题中猜测您打算使用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才能使这些代码段有效。