我正在尝试构建一个函数,该函数对可以存储在我的特殊类型中的值列表进行求和。
我的类型看起来像这样
type intnest = INT的INT |内容列表的列表;;
我正在尝试使用以下代码进行求和(我希望addup
返回类型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
我的自定义类型可以对其元素求和吗?如果是这样,我应该如何更改我的代码来实现这一目标?或者接下来应该尝试什么?
答案 0 :(得分: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)