6

Haskell 是一种具有许多植根于形式数学的特征的语言。我应该学习哪些数学主题才能更深入地了解和理解这门语言?例如,我认为抽象代数和范畴论都是值得探索的好话题。

4

2 回答 2

9

一般来说,离散数学、逻辑、思维集或关系、归纳、证明递归、核心递归、一些基本代数、数论、类型论和 lambda 演算,顺便说一句,有一些书籍涵盖了你在深入学习 haskell 时需要的所有数学知识。

于 2012-07-23T17:20:14.660 回答
3

我不认为抽象代数(群、环等)与 Haskell 直接相关,尽管抽象代数中使用的思维方式对 Haskell 程序员很有帮助。这与命令式语言形成鲜明对比,命令式语言需要更像微积分或分析中使用的思维过程。

在我看来,了解一点范畴论很有帮助。如果你能理解 Typeclassopedia,那可能就足够了。wikibook http://en.wikibooks.org/Haskell/Category_theory是一个很好的可读介绍,我发现它比任何数量的 monad 教程都更有帮助。公平地说,这大约是我目前对该主题的知识的限制,所以也许我错过了一些我还不知道的东西。更高级的范畴理论出现在一些高级的 Haskell 主题中,例如泛型,但至少目前我认为这些主题相当专业。我已经开始观看一些 Catsters 视频(在 Youtube 搜索框中输入“catsters”),并且发现它们对于构建“Haskell 来自何处”的视图很有趣,但我还没有看到那么多。

我认为了解一点逻辑也很重要,足以理解 Haskell 函数是由其类型签名(Curry-Howard 对应)表达的谓词的证明。这个概念的更好用(我从远处看到)似乎来自 Coq 和 Agda 中使用的直觉类型理论的知识。去年夏天,很多 Haskeller 正在阅读“软件基础”(http://www.cis.upenn.edu/~bcpierce/sf/),它是关于 Coq 的,看起来很棒,但我有太多时间要花时间我自己。它在我的名单上;-)。

于 2012-07-23T23:12:00.883 回答