假设我们想要在Nat上有一个“合适的”minus,要求m <= n让n `minus` m有意义: %hide minus
and
replaced 如果我正确理解了这个错误,它只是意味着它试图将目标相等(即minus { prf = prf2 } (S n + m) k)的RHS重写为minus { prf = prf2 } (n + S m) k,
这种方法的一个可能的缺点是,给定一个monoid m:monoid a (具有支持类型a的monoid )和m':monoid b (具有支持类型b的monoid ),我们甚至不能编写相等m = m'(更不用说证明它了),因为它是错误类型的。不知何故,有人会争辩说,如果m和m'具有相同的支持(a m = a m),并且运算符是相等的(
我有一个编程语言的AST的数据类型,我想解释一下,但AST大约有10个不同的构造函数。SeqTerm : Term -> Term -> Term
我正在尝试编写一个函数,它对这种语言的语法树具有可判定的等价性。从理论上讲,这很简单:没有什么太复杂的,它只是存储在AST中的简单数据。问题是,有一堆多余的案例。在构造函数匹配的第一个模式匹配之后,理想情况下我可以匹配下划线,因为没有其他可能