繁体   English   中英

OCaml无约束值

[英]OCaml Unbound Value

我必须创建一个递归函数来计算三种不同类型的二叉树的节点数,并且我习惯将它们保存在具有以下类型int * int * int的结果中,我认为我的推理是正确的。

type dtree =
        Decision of string * int * dtree * string * int * dtree
      | Chance of string * int * dtree * string * int * dtree
      | Outcome of int
;;


let rec count dt =
    match dt with
          Decision(choiceL, costL, l, choiceR, costR, r) -> (x+1,y,z) count l count r
        | Chance(eventL, probL, l, eventR, probR, r) ->   (x,y+1,z) count l count r
        | Outcome value -> (x,y,z+1)

;;

我在您的代码中看到了很多问题,但如果您提出具体问题可能会更好。 就像一个开始的地方,你使用名称xyz而不在任何地方定义它们。

我认为,问题的关键在于您需要为递归调用count lcount r返回的值指定名称。 一旦有了名称,就可以在树的当前级别的结果中使用它们。

更新

这是一个将值添加到对列表中的函数。 它具有与您正在寻找的相同的粗略结构:

let rec sumpairs pairs =
    match pairs with
    | [] -> (0, 0)
    | (x, y) :: tail ->
        let (subx, suby) = sumpairs tail in
        (subx + x, suby + y)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM