如何推导该类型的自由定理:
|
0 1 2 2 1 2 0 [0] 1|2 1 2 0 0 1 [1]
1 2 1 1 0 2 0 [0] 1|2 1 2 0 1 2 [0] 1 2 1 2 0 2 1 [1]
|
哪里data F a = C1 Nat | C2 Bool Nat a
就是Nat
?
原则上,可以通过Haskell的“自由定理”软件包来解决这个问题,但是它太老了,无法在我可以合理安装的任何GHC版本下进行编译。
答案 0 :(得分:4)
有an online generator for free theorems at,不久前我created an alternative UI掉下来了,它完全在浏览器中运行(使用reflex-dom
)。
但是,更深层的问题是,从这些软件包的角度来看,自由定理是多态函数的属性,因此,要回答您的问题,您必须给出一个函数(例如{{ 1}}),您感兴趣的自由定理。