寻找 "free theorem"
Finding a "free theorem"
如何推导出类型的自由定理:
data F a = C1 Nat | C2 Bool Nat a
其中 Nat
就是 data Nat = Z | S Nat
?
原则上,Haskell 'free-theorems' 包可以解决这个问题,但它太老了,无法在我可以合理安装的任何 GHC 版本下编译。
有an online generator for free theorems at, and when it was down a little while ago I created an alternative UI完全在浏览器中运行(使用reflex-dom
)。
但更深层次的问题是自由定理,在这些包的意义上,是多态函数的属性,所以为了回答你的问题,你必须给出一个您对其自由定理感兴趣的函数(如 map
)。
如何推导出类型的自由定理:
data F a = C1 Nat | C2 Bool Nat a
其中 Nat
就是 data Nat = Z | S Nat
?
原则上,Haskell 'free-theorems' 包可以解决这个问题,但它太老了,无法在我可以合理安装的任何 GHC 版本下编译。
有an online generator for free theorems at, and when it was down a little while ago I created an alternative UI完全在浏览器中运行(使用reflex-dom
)。
但更深层次的问题是自由定理,在这些包的意义上,是多态函数的属性,所以为了回答你的问题,你必须给出一个您对其自由定理感兴趣的函数(如 map
)。