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)))