列表,lamba和过滤结果列表

时间:2017-02-07 17:49:48

标签: lambda f# functional-programming

我想创建两个函数: 1)在list(int list list)中查找小于零的所有元素的函数,然后将这些元素作为(int list)类型的列表返回。

2)找到偶数列表中的所有数字的函数(浮点列表列表),然后将它们作为(int list)返回。

他们两个都应该使用至少一个lambda表达式(fun x - > ...)。

如何创建这些功能?说实话,我不知道。

let findnegative(d:int list list)=
  //maybe    List.map

let findeven (t:float list list) = 
 //something with     List.filter (fun x -> x%2.0 = 0.0)

1 个答案:

答案 0 :(得分:3)

我认为你正在寻找这样的东西:

let findnegative(d:int list list) =
  d
  |> List.map (fun x -> x |> List.filter (fun y -> y < 0))
  |> List.collect id

let findeven (t:float list list) = 
  t
  |> List.map (fun x -> x |> List.filter (fun y -> y % 2.0 = 0.0))
  |> List.collect id
  |> List.map int

这可以简化为:

let findnegative =
  List.collect <| List.filter ((>)0)

let findeven = 
  List.collect <| List.filter (fun x -> x % 2. = 0.) >> List.map int