我正在尝试编写两个相互归纳数据类型的声明,它们都将类型参数作为参数,如下所示:
noeq
type foo 'a =
| FooA: x: 'a -> foo 'a
| Foob: y: bar 'a -> foo 'a
and bar 'b =
| BarA: x: int -> bar 'b
| BarF: y: foo 'b -> bar 'b
我收到如下错误消息:
LabeledStates.fst(59,0-64,31):(错误 67)未能解决归纳法的全域不等式 报告了 1 个错误(见上文)
(其中第 59 行是包含“type foo 'a”的行)
这个错误是什么意思,我能做些什么来解决它?
如果我删除类型参数(例如,给 foo.x 提供 int 类型),我就不会再收到错误了。同样,如果我只给其中一种类型一个类型参数而不给另一个类型,我也没有错误。