我有一个haskell程序,根据输入n列出[1..n]中的所有整数.我想根据条件过滤某些数字并显示为列表.我在哪里以及如何使用过滤功能/条件?
根据haskell文档:
filter :: (a -> Bool) -> [a] -> [a]
Run Code Online (Sandbox Code Playgroud)
filter,应用于谓词和列表,返回满足谓词的那些元素的列表; 即
filter p xs = [ x | x <- xs, p x]
Run Code Online (Sandbox Code Playgroud)
Sar*_*rah 25
你得到了它,差不多.因此,剩下的交易是为您的列表设计谓词函数.假设您已经有一个名为xs的列表和一个谓词函数p,那么您所要做的就是
过滤p xs.
通常,您会看到p定义为匿名或lambda表达式,如下所示:
过滤器(\n - > n`mod` 2 == 0)xs.
没有必要,作为初学者定义命名函数可能会有所帮助.
isEven n = n`mod` 2 == 0
evenListNumbers xs = filter isEven xs
evenListNumbers [1,2,3,4]
这是[2,4].
因此,给定列表过滤器的谓词函数接受一个列表元素并返回一个布尔值.如果是,则保留该元素(或将其添加到结果列表中),如果该元素为false,则将其传递.
| 归档时间: |
|
| 查看次数: |
33996 次 |
| 最近记录: |