Дополнение к числам Пеано на уровне типа

Я определил типы для чисел Пеано

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?

0 ответов

Другие вопросы по тегам