不,您无需阅读有关类别理论的书即可了解Haskell。
我已经使用Haskell几年了,出于好奇心选择了一些类别理论,这确实没有必要。一方面,很高兴看到所有这些抽象如何适合“全局”,但我没有去做,“哦,我的天哪,我只需要将该Maybe
类别从[]
s 转变为s,然后我就可以保存公主!”。
现在,取决于您对Haskell类型理论所做的工作已经迫在眉睫。
如果您只是在学习haskell,请不要尝试去理解类型系统的每个细微差别。请不要,这就像尝试先学习C ++模板元编程一样。奇特的类型是出色的工具,但是对函数式编程有很好的了解比了解强制性多态性要好。
现在让我们说,在经过一两年的Haskell之后,您希望了解Haskell的类型系统如何工作的每一个微妙的部分,然后,是的,某些类型理论可能会有所帮助。
它将帮助您了解事物工作原理的一些逻辑,而且坦率地说,它是值得一看的非常酷的计算机科学IMO分支。您可以挑选感兴趣的零件,但仍然可以学到很多。
对于Haskell,请看一下STLC,HM类型的系统(系统F)以及lambda多维数据集(Haskell是系统Fw iirc)和等递归类型。类型和编程语言是很好的入门资源,涵盖了所有这些以及更多内容。
如果您真的想喝凉爽的药,并且发现自己是一个崭露头角的理论家,请去阿格达(Agda)或科克(Coq)戳戳。这些具有“从属类型”的特征,在lambda多维数据集中比Haskell向前一步。依赖类型让类型依赖于术语。这意味着类型足够强大,可以实际证明定理。对于好奇,谷歌搜索的“咖喱霍华德同构”,应该会提出一些有趣的结果。