有一些方法(例如,https://jeltsch.wordpress.com/2012/04/30/dependently-typed-programming-and-theorem-proving-in-haskell/,PromotedDataKinds扩展)来伪造haskell中的依赖类型,这样就可以在haskell本身中证明一些代码属性。
我可能想要证明的属性示例包括somr Monad类型类实例的某些函数或monad定律的总和。
这样的证据就是一个值(a :: T),其中T代表我们证明的陈述。不幸的是,在haskell中我们可以写出假类型的术语,例如: G。 (修复id :: forall a.a),所以我们可以证明一切。是否有工具可以检查证据的正确性或haskell的monad法律满意度? 有人在源代码中包含证明吗?