多态推理

zer*_*ing 2 haskell

我正在学习Haskell,在互联网上我找到了来自Philip Wadler的论文.
我读它并且根本不理解,但它以某种方式连接到多态函数.

例如:

polyfunc :: a -> a -> a
Run Code Online (Sandbox Code Playgroud)

它是任何类型的多态函数.

这个例子的自由定理是什么polyfunc

tre*_*ook 8

我觉得如果我真的理解那篇论文,那么我写的任何代码都会被上帝合着.

我对这个问题的最好猜测是,所有polyfunc可以做的是要么总是返回第一个参数,要么总是返回第二个参数.所以实际上只有两个实现polyfunc,

polyfuncA a _ = a
polyfuncB _ b = b
Run Code Online (Sandbox Code Playgroud)

本文为您提供了证明该声明的方法.

这是一个非常重要的概念.例如,我以前参与过数据质量研究.这个自由定理说没有能从两个任意数据中选择最佳数据的函数.我们必须了解更多.实际上,我很惊讶地发现有些人愿意忽略它.