Math 哪些数学主题对深入理解哈斯克尔最为重要?

Math 哪些数学主题对深入理解哈斯克尔最为重要?,math,haskell,Math,Haskell,Haskell是一种植根于形式数学的语言,具有许多特征。我应该学习哪些数学主题来加深对语言的欣赏和理解?例如,我认为抽象代数和范畴论都是值得探讨的好课题。一般来说,离散数学、逻辑、思维集或关系、归纳、证明、递归、协同推理、一些基础代数、数论、类型论和lambda演算,顺便说一句,有些书涵盖了潜入haskell时所需的所有数学知识。我不认为抽象代数(群、环等)与haskell有直接关系,尽管抽象代数中使用的思维方式对haskell程序员非常有帮助。这与命令式语言形成对比,命令式语言更像是微积分或分

Haskell是一种植根于形式数学的语言,具有许多特征。我应该学习哪些数学主题来加深对语言的欣赏和理解?例如,我认为抽象代数和范畴论都是值得探讨的好课题。

一般来说,离散数学、逻辑、思维集或关系、归纳、证明、递归、协同推理、一些基础代数、数论、类型论和lambda演算,顺便说一句,有些书涵盖了潜入haskell时所需的所有数学知识。

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

在我看来,了解一点范畴理论是非常有帮助的。如果你能理解Typeclassopedia,那就足够了。wikibook是一本可读性很好的介绍,我发现它比任何数量的monad教程都更有帮助。公平地说,这是我目前对这门学科知识的极限,所以也许我遗漏了一些我还没有意识到的东西。更高级的范畴理论出现在一些高级的Haskell主题中,比如泛型,但至少现在我认为这些是相当专业的。我已经开始看一些猫咪视频(在Youtube搜索框中输入“猫咪”),我发现它们对构建“Haskell来自何方”的视图很有兴趣,但我还没有看到那么多


我认为理解一点逻辑也是很重要的,这足以理解Haskell函数是由其类型签名(Curry-Howard对应)表示的谓词的证明。这个概念的爱好者使用(我从远处看)似乎来自于Coq和Agda中使用的直觉类型理论的知识。去年夏天,很多哈斯凯尔人都在读《软件基础》(softwarefundations),这本书是关于Coq的,看起来很棒,但我自己花了太多时间在上面。它在我的名单上;-)

其中一个很好的例子是Kees Doets和van Jan Eijck的Haskell逻辑、数学和编程之路。@MatthewPiziak是的,我碰巧有一个,我怀疑基本微积分是否真的与Haskell有关,即使是为了深入理解。而且,类型理论似乎缺失了(尽管它与CS有着更密切的联系,但它仍然是形式数学)。@comingstorm:充分理论化的CS和数学之间的界限是模糊的。我认为lambda演算也是一个类似的例子:很多计算机系的人都知道它,但我认识的大多数非计算机系的数学人都不知道。尽管如此,这两种方法都是数学,对于任何学习CS的人来说都是值得学习的。你可能会发现,用haskell的方法探索范畴理论比用其他方法更容易