ペアノ数の型を定義しました
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)
今、私は 2 つの制約Plus a b c
とを持っていることに気付きPlus c d e
ました。
コンパイラが派生できるように、クラスに加算演算を定義するにはどうすればよいPlus a (b + d) e
ですか?