Compiler errors OCaml我在哪里出错了?

Compiler errors OCaml我在哪里出错了?,compiler-errors,ocaml,Compiler Errors,Ocaml,如何更正此错误 type 'a drzewo = | Puste | Wezel of 'a * 'a drzewo * 'a drzewo let rec inorder t = match t with | Puste -> print_int (-1) | Wezel (v, l, r) -> (inorder l; print_int v; inorder r) let tree = (1, (Wezel (2, (Wezel (3, Puste,

如何更正此错误

type 'a drzewo = | Puste | Wezel of 'a * 'a drzewo * 'a drzewo

let rec inorder t =
  match t with
  | Puste -> print_int (-1)
  | Wezel (v, l, r) -> (inorder l; print_int v; inorder r)

let tree =
  (1,
   (Wezel (2, (Wezel (3, Puste, Puste)),
      (Wezel (4, (Wezel (5, Puste, Puste)), Puste)))),
   (Wezel (6, Puste, Puste)))

let _ = inorder tree
以及错误日志:

设uz=有序树;;错误:此表达式的类型为int*int drzewo*int drzewo 但应为int drzewo类型的表达式


您的错误消息已经提供了大量信息,请重新仔细阅读。“tree”的类型是“int*int-drzewo*int-drzewo”(三元组),但它必须是“int-drzewo”(因为订单的类型为“int-drzewo->unit”)

所以只要纠正它:

let tree = Wezel (1,
          (Wezel (2, (Wezel (3, Puste, Puste)),
              (Wezel (4, (Wezel (5, Puste, Puste)), Puste)))),
          (Wezel (6, Puste, Puste)))
问题就在这里

let tree =
  (1,
   (Wezel (2, (Wezel (3, Puste, Puste)),
      (Wezel (4, (Wezel (5, Puste, Puste)), Puste)))),
   (Wezel (6, Puste, Puste)))
您没有在前面添加
Wezel


应该是:

let tree =
      Wezel (1,
       (Wezel (2, (Wezel (3, Puste, Puste)),
          (Wezel (4, (Wezel (5, Puste, Puste)), Puste)))),
       (Wezel (6, Puste, Puste)))