2013-10-25 23 views
0

我试图建立一个总结,可以被储存在我的特殊类型的值列表的功能。琛自定义类型,就好像它是一个正常的列表F#

我喜欢的类型是这样的

型intnest = 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 

可以将我的自定义类型有它的元素总结?如果是的话我应该怎么改变我的代码来实现这一目标?或者接下来我应该尝试什么?

+4

我觉得你真的需要阅读的文档,而不是发布这样一个庞大的一批questsions以SO - 在这里看到HTTP: //msdn.microsoft.com/en-us/library/dd233226.aspx –

回答

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) 
相关问题