F#列表中所有其他元素的总和

Div*_*aim 7 f# functional-programming

可以说我有一个这样的函数定义:

let sum (numbers: int list) =
    // code here
Run Code Online (Sandbox Code Playgroud)

有哪些方法可以计算数字列表中所有其他元素的总和?所以如果输入[3;5;3;7]结果是[(3, 15); (5, 13); (3, 15); (7, 11)].

我实际上对任何解决方案感兴趣,尤其是那些使用功能方法

谢谢

gor*_*ric 13

您可以通过对列表求和然后为列表中(x, sum - x)的每个元素返回元组来非常天真地执行此操作x:

let sum (numbers: int list) : (int * int) list = 
    let s = List.sum numbers
    numbers |> List.map(fun x -> (x, s-x))

let nums = [3;5;3;7]
printfn "%A" (sum nums) // [(3, 15); (5, 13); (3, 15); (7, 11)]
Run Code Online (Sandbox Code Playgroud)