我已经为 Peano 数字定义了类型
class Plus (n :: T) (m :: T) (r :: T) | r n -> m
instance Plus 'Zero m m
instance Plus n m r => Plus ('Succ n) m ('Succ r)
现在我发现自己有两个约束Plus a b c
和Plus c d e
.
如何在我的类上定义一个加法操作,以便编译器能够派生Plus a (b + d) e
?
我已经为 Peano 数字定义了类型
class Plus (n :: T) (m :: T) (r :: T) | r n -> m
instance Plus 'Zero m m
instance Plus n m r => Plus ('Succ n) m ('Succ r)
现在我发现自己有两个约束Plus a b c
和Plus c d e
.
如何在我的类上定义一个加法操作,以便编译器能够派生Plus a (b + d) e
?