haskellに2つの型レベルの自然数を追加することは不可能だと思います。これは本当ですか?
自然数が次のように定義されているとします。
class HNat a
data HZero
instance HNat HZero
data HSucc n
instance (HNat n) => HNat (HSucc n)
次のような方法でHAddを定義することは可能ですか?
class (HNat n1, HNat n2, HNat ne) => HAdd n1 n2 ne | n1 n2 -> ne
instance HAdd HZero HZero HZero
instance (HNat x) => HAdd HZero x x
instance (HNat n1
,HNat x) => HAdd (HSucc n1) x (HAdd n1 (HSucc x) (???))