Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lambda 列表列表、lamba和筛选结果_Lambda_F#_Functional Programming - Fatal编程技术网

Lambda 列表列表、lamba和筛选结果

Lambda 列表列表、lamba和筛选结果,lambda,f#,functional-programming,Lambda,F#,Functional Programming,我想创建两个函数: 1) 函数,它在列表(int list)中查找所有小于零的元素,然后将这些元素作为(int list)类型的列表返回 2) 函数,用于查找列表(浮点列表)上的所有偶数,然后将其返回为(整数列表) 它们都应该使用至少一个lambda表达式(funx->…) 如何创建这些函数?老实说,我不知道 let findnegative(d:int list list)= //maybe List.map let findeven (t:float list list) =

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

2) 函数,用于查找列表(浮点列表)上的所有偶数,然后将其返回为(整数列表)

它们都应该使用至少一个lambda表达式(funx->…)

如何创建这些函数?老实说,我不知道

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)

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

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
让findnegative(d:int list)=
D
|>List.map(乐趣x->x |>List.filter(乐趣y->y<0))
|>List.collect id
让findeven(t:浮点列表)=
T
|>List.map(乐趣x->x |>List.filter(乐趣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
let findnegative=
列表(收集)0)
设findeven=
List.collect x%2.=0.)>>List.map int

使用
list |>list.collect id
将其从列表列表转换为列表。然后根据您的条件应用
List.filter
。@Asti-您实际上可以使用
List.filter…
而不是
id
作为
List.collect
的参数。collect一步完成。您试图做什么来解决问题?@kvb let findeven(t:float List List)=List.map(fun x->int(x))(List.filter)(乐趣x->x%2.0=0.0)t),但它不起作用(“浮动不匹配浮动列表”错误)还不错…你知道这个
|>
运算符是什么吗?它是
x%2.=0。
对我来说很奇怪是的,我几分钟前把它改了回去。我对其他语法的理解不太正确,我正在调查。啊,当我部分应用
(%)2时
这是由于
2。
运算符错误。我认为需要
有趣的语法。借助一个简单的帮助函数
flip
可以降低可读性;):
let findeven=let inline flip f l r=f r l in List.collect>(=)0.)>>List.map int
%
对于浮点数,我的意思是:)