Haskell擅长教授数学基础知识吗?


19

我参与了对诸如AS和A Level数学规范之类的要求进行数学教学的课程。

课本通常提供适用于数学任务的计算机软件示例,但它们通常基于Mathlab,mathematica或推导之类的软件应用程序。

即使使用真正的编程语言,它也通常是古老的常用语言,例如Pascal。我认为这真的很可悲。

因为Haskell以他对数学的感觉而闻名,并且因为我也对它感兴趣,所以我想问一问Haskell是否适合作为大学一年级学生的延伸锻炼方法。典型的主题是函数,弯度,极限,例如线性代数。

我具有编程方面的中级知识(c#,ruby,powershell,javascript,tex),并且已经使用XSLT进行函数式编程。

答案将负责任地予以推荐。详细的答案还包括应用于数学的Haskell代码的一些基本示例,例如线性代数(例如矢量空间),多项式,求解线性方程式,受到人们的广泛欢迎和关注。



@larsmans:谢谢。确实,这是一个很好的起点;我也对更实用的数学感兴趣,例如微分,极限,积分。
Emiliano Poggi

我看不到Mathematica是不是一种真正的编程语言。当我遇到数学问题时,我经常会先使用它(以及Octave),然后再转换为另一种语言。如果重点是数学,那么我认为没有理由不适合使用专门的数学语言。
edA-qa mort-ora-y

@edA:Mathematica!=八度!Octave是Matlab的克隆。两者都使用的人会告诉我Matlab / Octave更适合数字(大数组,FFT等),而Mathematica更适合符号操作。与Mathematica等效的最接近FOSS可能是Maxima(以前的Macsyma)。
2011年

@timday,是的,我知道Octave!= Mathematica,但是代码语言是相同的。我还将Maxima用于符号操作。
edA-qa mort-ora-y

Answers:


9

Haskell在数学家中越来越受欢迎。正如一位博主所说:

“在我参与到该主题中之后,突出的一件事是,我日常的数学讨论中表达的思想与Haskell代码表达的思想之间的距离相对较小。”

因此,这里收集了一些意见,我认为您采用这种方法绝对不会出错。

在此处输入图片说明

在此处输入图片说明

最后,


1
阅读了您的某些链接后,我不能说我太相信了。实际有任何人坐下来参加Haskell会话并像Mathematica / Maxima一样工作的示例。此外,“ 11个理由”博客指出了从数学家的角度来看标准库是一团糟,在查看数学软件包列表时,我看到了很多数字(例如blas,fft),但在符号操纵/ CAS的方式。话虽如此……这两本书看起来都很有趣!
2011年

是的,一些实际数学示例将非常有用(例如lin。代数矩阵的加法运算等)-看看实际语法的外观。我敢打赌甚至没有操作重载...
Andriy Drozdyuk

@drozzy:当然,通过类型类有运算符重载。
nomen 2014年

4

虽然我是Haskell的数学迷,但它可能并不适合AS / A级别的所有主题。

教授函数的概念将没有问题,线性代数在Haskell中可能很好。线性代数通常以非常必要的方式教授数组的就地更新。可以将其全部翻译为Haskell,但可能需要一些不同的思考。

但是,当您要讨论极限和微积分时,它变得棘手。我使用非常规方法在Haskell进行微积分方面取得了巨大成功。但是,在按照固定课程教学时,这可能不是一个好主意。另外,您可以使用符号区分,但是随后您将不得不为表达式构建数据类型,这对于A / AS级别可能是棘手的。入门的代码并不多,仅需几行代码,但对学生来说却可能令人恐惧。与Derive和Mathematica不同,您不会免费获得符号表达式。

使用List单子可以轻松地探索基本组合器。这对于教授概率论可能很有用。

Haskell非常适合可能出现在A / AS级别的数字应用,例如。应用辛普森规则或调查样本均值和方差。

你会做基础小组理论吗?在Haskell中很容易编写代码并使用。

总的来说,如果您在极限范围内保持谨慎,我怀疑使用Haskell进行很多A / AS级数学很简单。


2

我不确定Haskell是否是一个不错的选择。当然,它具有非常“数学的感觉”,可以处理无限的结构等。但是,只有在您已经了解该语言的情况下,您才能欣赏这些功能。学习Haskell以学习数学将一项艰巨的任务叠加在另一项之上。学习Haskell 很难的,即使你已经知道节目。因此,这实际上取决于您的听众是否足够聪明和好奇,否则您会因为数学而失去一半,而由于Haskell而失去另一半。


如果您已经知道Haskell的数学原理,那么学习它就很容易。很容易。
nomen 2014年

@nomen可能是,但这不是问题。
兰代2014年

我的意思是,很难向具有编程背景的人学习不会取消资格。
nomen 2014年

1

没有计算机语言可以教您数学。只有数学才能教您数学。即:纸笔方法(或粉笔和黑板),公理,定理和证明。这是数学。不管语言多么性感,用它编写的程序都不是数学,而是数学的一种应用。要应用某些东西,您需要先学习它。


1
我认为没有人期望编程语言可以从字面上讲授数学,并且我不认为最初的问题要求编程语言可以从字面上讲授数学。他们想要一些可以用于一些练习的东西,以帮助数学教学。
user27539 2011年

粉笔,黑板...
quant_dev

不同意。语言只是一种表达方式。粉笔,铅笔,计算机:只是用于具体表达数学的工具。语言只是抽象表达数学的工具。比较Haskell-Curry同构定理(程序是构造逻辑的证明
nomen 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.