Binary Idris无法识别等价类型

Binary Idris无法识别等价类型,binary,type-mismatch,idris,dependent-type,binomial-heap,Binary,Type Mismatch,Idris,Dependent Type,Binomial Heap,我试图在Idris中实现二项式堆,所以我定义了一个类型 data Bin=MSEnd | B0 Bin | B1 Bin 其中,MSEnd代表“最高有效端”(例如,B0(B1(B1 MSEnd))代表6) 我还定义了一个函数来将它们添加到一起。我已经测试过了,它的工作原理和预期的一样 (帮助器函数such,增加一个二进制数)也是如此 但是,在一个类型签名依赖于这个plus函数的不同函数中,我得到了编译器错误 Type mismatch between b1

我试图在Idris中实现二项式堆,所以我定义了一个类型

data Bin=MSEnd | B0 Bin | B1 Bin

其中,
MSEnd
代表“最高有效端”(例如,
B0(B1(B1 MSEnd))
代表
6

我还定义了一个函数来将它们添加到一起。我已经测试过了,它的工作原理和预期的一样 (帮助器函数
such
,增加一个二进制数)也是如此

但是,在一个类型签名依赖于这个
plus
函数的不同函数中,我得到了编译器错误

Type mismatch between
                b1
        and
                plus b1 MSEnd

根据
plus
的定义,Idris编译器似乎可以轻松确定它们是否相等。这里出了什么问题?

如果您可以在不同的功能中提供
succ
,或者提供要点,这会有所帮助。否则,人们只能猜测发生了什么。加号是已知的总数吗?尝试在其类型签名上添加一个“total”注释。如果您可以在不同的函数中提供
succ
,或者提供要点,这会有所帮助。否则,人们只能猜测发生了什么。加号是已知的总数吗?尝试在其类型签名上添加“total”注释。
Type mismatch between
                b1
        and
                plus b1 MSEnd