0

我正在尝试构建一个函数来汇总可以存储在我的特殊类型中的值列表。

我的类型看起来像这样

类型 intnest = INT of int | 利益清单清单;;

我正在尝试使用下面的代码进行求和(我想addup返回 type intnest

let rec regularsum list =
   match list with
   | head :: tail -> head + regularsum tail
   | [] -> 0

let addup lt = 
    match lt with
    | INT -> lt
    | LIST ->regularsum lt

我的自定义类型可以对其元素求和吗?如果是这样,我应该如何更改我的代码来实现这一点?或者我接下来应该尝试什么?

4

1 回答 1

2

所以最好的方法是使用高阶函数

let rec addup l =
    match l with
    |INT(_) -> l
    |LIST(li) -> 
        INT(
             li 
             |> List.map (addup) 
             |> List.fold (fun s t -> match t with |INT(a) -> s+a | _ -> failwith "bad error") 0)
于 2013-10-25T04:57:08.213 回答