如何根据列的值从列表中删除行

时间:2014-08-26 02:45:02

标签: haskell

我有一个我创建的数据类型(SlcCustomer)列表:

[SlcCustomer {slcCustName = "Xena Gamble", slcCustID = 1, slcCustAge = 27},SlcCustomer {slcCustName = "Brooke Castaneda", slcCustID = 2, slcCustAge = 80}]

我在结果上使用PRINT函数得到了这个输出。

现在我需要FILTER这个,我想删除任何有slcCustAge< = 20的行...有没有办法使用内置的过滤器类型的东西并以某种方式检查它?

1 个答案:

答案 0 :(得分:6)

一种简单的方法是使用列表推导:

let sourcelist = [SlcCustomer {slcCustName = "Xena Gamble", slcCustID = 1, slcCustAge = 27},SlcCustomer {slcCustName = "Brooke Castaneda", slcCustID = 2, slcCustAge = 80}]
let resultlist = [x | x <- sourcelist, slcCustAge x <= 20]

这将根据需要过滤列表,并在逗号后面指定过滤条件。

或者,您可以使用filter执行相同的操作:

let resultlist = filter (\x -> slcCustAge x <= 20) sourcelist

您可以从功能中返回resultlist,或根据您的需要进行打印。