归纳记录的要素

问题描述 投票:0回答:1
type MyType = {a:int; b:int};;
let test = [{a=5;b=10}; {a=10;b=100}; {a=200; b=500}; {a=100; b=2}];;

我想创建一个函数,它将对以下内容进行汇总。ab 这样它将显示

Sum of a : 315
Sum of b : 612

我想我必须使用一个递归函数。这是我的尝试。

let my_func record =
  let adds = [] in 
  let rec add_func = match adds with
  | [] -> record.a::adds; record.b::adds
  | _ -> s + add_func(e::r)

add_func test;;

这个函数似乎根本不起作用。有没有正确的方法来做这样的函数?

sum ocaml record
1个回答
1
投票

好的,你知道你在做什么,我想你只是需要一个建议。

假设你的函数名为 sumab 并返回一对ints。那么你的递归函数中的关键表达式将是这样的。

| { a = ha; b = hb; } :: t ->
    let (a, b) = sumab t in (ha + a, hb + b)
© www.soinside.com 2019 - 2024. All rights reserved.