Haskell是一种具有许多根植于形式数学的特征的语言.我应该学习哪些数学主题才能更深入地理解和理解语言?例如,我认为抽象代数和范畴理论都是很好的主题.
一般来说,离散数学,逻辑,思维集或关系,归纳,证明递归,核心约束,一些基本代数,数论,类型理论和lambda演算,BTW有书籍涵盖了你在潜入haskell时所需的所有数学.
小智 3
我不认为抽象代数(群、环等)与 Haskell 直接相关,尽管抽象代数中使用的思维方式对 Haskell 程序员非常有帮助。这与命令式语言形成鲜明对比,命令式语言需要更像微积分或分析中使用的思维过程。
我认为了解一点范畴论非常有帮助。如果你能理解 Typeclassopedia,那就足够了。wikibook http://en.wikibooks.org/Haskell/Category_theory是一个很好的可读介绍,我发现它比任何数量的 monad 教程都更有帮助。公平地说,这大约是我目前对该主题的了解的极限,所以也许我遗漏了一些我尚未意识到的东西。更高级的范畴论出现在一些高级 Haskell 主题中,例如泛型,但至少现在我认为这些是相当专业的。我已经开始观看一些 Catsters 视频(在 Youtube 搜索框中输入“catsters”),并发现它们对于构建“Haskell 来自哪里”的视图很有趣,但我还没有看到那么多。
我认为了解一点逻辑也很重要,足以理解 Haskell 函数是由其类型签名(Curry-Howard 对应)表示的谓词的证明。这个概念的更高级的使用(正如我从远处看到的)似乎来自 Coq 和 Agda 中使用的直觉类型理论知识。去年夏天,很多 Haskellers 正在阅读《软件基础》( http://www.cis.upenn.edu/~bcpierce/sf/ ),这是关于 Coq 的,看起来很棒,但我有太多事情要做,没有时间花时间。就我自己而言。它在我的清单上;-)。