【发布时间】:2008-11-20 01:48:03
【问题描述】:
我有兴趣在自己的时间(而不是通过课程)学习 Haskell,但我怀疑我的数学背景可能不足以理解重要的语言概念 (TBD)。
我有一年的大学微积分(单变量),但没有离散数学或逻辑。
我会在数学上遇到空白吗?
【问题讨论】:
-
如果您曾经尝试过 Haskell,请在此处添加评论,说明它是如何进行的 - 以及遇到的困难是否与缺乏数学背景有关。
我有兴趣在自己的时间(而不是通过课程)学习 Haskell,但我怀疑我的数学背景可能不足以理解重要的语言概念 (TBD)。
我有一年的大学微积分(单变量),但没有离散数学或逻辑。
我会在数学上遇到空白吗?
【问题讨论】:
你为什么不试试看呢?
Haskell 的设计借鉴了范畴论(monads、arrows、transformers)等领域的数学思想,但大多数 Haskell 程序员无论如何都只了解这些与编程的关系 :-)
你不需要任何特别高级的数学来学习 Haskell,除了能够在数学意义上思考一个函数(比如,“a map f: X -> Y”而不是“subroutine”执行某些操作),能够考虑高阶函数(例如,说“'compose f g' 是一个在输入 x 处具有值 f(g(x)) 的函数”)等等。 Haskell 的符号非常干净,所以这也不成问题。
【讨论】:
Haskell 的重要概念对所有纯函数式语言也很重要,我相信不一定需要高等数学。
考虑到你已经学了一年微积分,你会没事的。
虽然有 lambda 演算的背景可能很好,但对 Haskell 来说并不是硬性要求。
【讨论】:
你会没事的。水是温暖的。跳进去!
【讨论】:
数学?嗯,没有。你根本不需要数学(就像数学中代数、微积分、几何这个词的常识),但你确实需要一个逻辑(逻辑==数学?)大脑来编程,就像使用任何其他语言一样
【讨论】:
大约八年前,我自学了 Haskell,只学习过商业微积分,我认为不需要任何数学。
【讨论】:
我相信 Haskell 教会了你很多逻辑和离散数学,所以学习 Haskell,你也会获得一些数学技能:)
【讨论】:
您了解的通用代数和范畴论越多越好,因为 Haskell 从这些数学分支(即 Monad、代数类型系统、箭头和函子)中吸取了很多。
【讨论】: