F#访问lambda中的元组成员

F#访问lambda中的元组成员,lambda,f#,Lambda,F#,我有一个groups类型DateTime*int*decimal*decimal list,我试图生成一个decimal list,每个元素是组内部列表中第四个元素的总和。 我的尝试如下: groups |> List.map(fun x -> (List.reduce (fun acc elem -> elem + acc )) elem假设为DateTime*int*decimal*decimal,我的问题是如何访问上述lambda中元组的第四个元素?您可以在lambda

我有一个
groups
类型
DateTime*int*decimal*decimal list
,我试图生成一个
decimal list
,每个元素是
组内部列表中第四个元素的总和。
我的尝试如下:

groups
|> List.map(fun x -> (List.reduce (fun acc elem -> elem + acc ))

elem
假设为
DateTime*int*decimal*decimal
,我的问题是如何访问上述lambda中元组的第四个元素?

您可以在lambda参数声明中分解元组:
fun(u,u,d,)->d
将返回元组的第三个元素

您还可以使用
List.sumBy
而不是
List.reduce
来简化代码

//sample data
let groups = [
    [(System.DateTime(), 1, 1.5M, 2.5M); (System.DateTime(), 1, 4.1M, 2.5M)]
    [System.DateTime(), 1, 3.2M, 2.5M]
]

groups
|> List.map (List.sumBy (fun (_,_,d,_) -> d))