0

特別な型に格納できる値のリストを合計する関数を作成しようとしています。

私のタイプはこんな感じ

type intnest = int の INT | intnest リストの LIST;;

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 に答える