Это просто тест, так что я не очень понимаю, но у меня есть эти определения:GADT определение
type z
type _ s
type (_, _, _) balance =
| Less : (*∀'a.*) ('a, 'a s, 'a s) balance
| Same : (*∀'b.*) ('b, 'b, 'b) balance
| More : (*∀'a.*) ('a s, 'a, 'a s) balance
type _ aVL =
| Leaf : z aVL
| Node : (*∀'a, 'b, 'c.*)('a, 'b, 'c) balance * 'a aVL * int * 'b aVL ->
('c s) aVL
и я получаю сообщение об ошибке для «типа _ AVL =»:
Error: In this definition, a type variable cannot be deduced
from the type parameters.
Что делать?
Скомпилировано здесь с ocaml 4.00.1. Какая версия у вас есть? – gsg
@gsg Я попросил «caml-list», и причина заключается в лечении инъективности типов, введенных на OCaml 4.01. Я приведу ответ как ответ в ближайшее время (если только GaSche не сделает это в первую очередь). – lukstafi
Прошу, похоже, это может быть интересно читать. – gsg