Haskellは数学の基礎を教えるのが得意ですか?


19

私は、ASやAレベルの数学仕様などの要件を持つクラスに数学を教えることに関与しています。

クラスの本は通常、数学のタスクに適用されるコンピューターソフトウェアの例を提供しますが、通常はmathlab、mathematica、derivateなどのソフトウェアアプリケーションに基づいています。

実際のプログラミング言語を使用する場合でも、通常はPascalなどの古い言語です。そして、これは私の意見では本当に悲しいです。

なぜなら、Haskellは数学に対する彼の気持ちで有名であり、私もそれに興味があるので、Haskellが大学1年生のエクステンション運動方法として良い選択かどうかを尋ねたいと思います。典型的な主題は、関数、計算、限界だけでなく、例えば線形代数でもあります。

私はプログラミング(c#、ruby、powershell、javascript、tex)で中級の知識経験があり、XSLTを使用した関数型プログラミングにもすでに取り組んでいます。

回答は責任をもって支持されます。線形代数(ベクトル空間など)、多項式、線形方程式の解法など、数学に適用されるHaskellコードの基本的な例を含む詳細な回答は、必要なものとして高く評価され、対象とされています。


3
この本をご覧
フレッドフー

@larsmans:ありがとう。それは確かに良い出発点です。また、微分、限界、積分など、より実用的な数学にも興味があります。
エミリアーノポッジ

Mathematicaが実際のプログラミング言語ではないことを理解できません。数学の問題があるときは、最初に(よくOctaveを使用して)頻繁に使用してから、別の言語に変換します。数学に焦点が当てられている場合、専門的な数学言語が適切でない理由はわかりません。
edA-qa mort-ora-y

@edA:Mathematica!=オクターブ!OctaveはMatlabのクローンです。両方を使用する人は、Matlab / Octaveは数値(大きな配列、FFTなど)に適しているのに対し、Mathematicaはシンボリック操作に適していると教えてくれます。Mathematicaに最も近いFOSSはおそらくMaxima(以前のMacsyma)です。
ティムデイ

@timday、はい、Octave!= Mathematicaを知っていますが、コード言語は同じです。また、記号操作にはMaximaを使用します。
edA-qa mort-ora-y

回答:


9

Haskellは数学者の間で人気が高まっています。あるブロガーが言ったように:

「私が主題に関与した後、際立っていることの1つは、私の通常の数学的談話で表現された思考とHaskellコードで表現された思考との間の比較的低い距離です。」

したがって、ここにいくつかの収集されたビューがありますが、このアプローチをとることはひどく間違ってはいけないと私は感じています。

ここに画像の説明を入力してください

ここに画像の説明を入力してください

最後に、


1
あなたのリンクのいくつかを読んで、私はあまりにも確信しているとは言えません。Haskellセッションに座って、Mathematica / Maximaのように動作する人の実際の例はありますか?さらに、「11の理由」ブログは、数学者の観点から標準ライブラリが混乱していることを指摘し、数学パッケージのリストを見ると、多くの数値(例:blas、fft)が見られますが、シンボリック操作/ CASの方法。そうは言っても...両方の本は本当に面白そうです!
timday

ええ、実際の数学のいくつかの例は素晴らしいでしょう(lin。algebra行列の追加など)-実際の構文がどのように見えるかを見るために。私もOP-過負荷に...がない賭け
アンドリーDrozdyuk

@drozzy:もちろん、型クラスを介した演算子のオーバーロードがあります。
ノメン14

4

私は数学を教えるためのHaskellの大ファンですが、AS / Aレベルのすべてのトピックに適しているとは限りません。

関数の概念を教えることに問題はありません。また、Haskellでは線形代数が便利です。線形代数は、多くの場合、配列のインプレース更新により非常に命令的な方法で教えられます。すべてHaskellに翻訳できますが、少し違った考え方が必要になる場合があります。

ただし、制限と計算について説明する場合は注意が必要です。Haskellで従来とは異なるアプローチで微積分を行うことで大きな成功を収めました。しかし、それは固定シラバスに教えるとき、素晴らしいアイデアではないかもしれません。あるいは、シンボリックな差別化を試すこともできますが、A / ASレベルでは扱いにくい式のデータ型を作成する必要があります。始めるのにそれほど多くのコードではなく、ほんの数行ですが、学生にとっては恐ろしいかもしれません。DeriveやMathematicaとは異なり、無料でシンボリック式を取得することはできません。

基本的な組み合わせは、リストモナドで簡単に探索できます。これは、確率論を教えるのに役立つかもしれません。

Haskellは、A / ASレベルで表示されるような数値アプリケーションに適しています。シンプソンのルールを適用するか、サンプルの平均と分散を調査します。

初等群論をしますか?Haskellでのコーディングと操作は簡単です。

全体的に、制限に注意を払えば、A / ASレベルの数学の多くをHaskellで行うのは簡単だと思います。


2

Haskellが良い選択かどうかはわかりません。もちろん、それは非常に「数学的な感覚」を持ち、無限の構造などを扱います。しかし、これらの機能を理解できるのは、言語をすでに知っている場合だけです。数学を学習するためにHaskellを学習することは、難しい課題を別の課題に積み重ねます。既にプログラミングを知っていても、Haskellを学ぶの難しいです。したがって、視聴者が明るくて好奇心が強いかどうかによって異なります。それ以外の場合は、数学のせいで半分が失われ、残りの半分はHaskellのせいで失われます。


Haskellの学習は、その背後にある数学を既に知っていれば簡単です。非常に簡単。
ノメン14

@nomenかもしれませんが、これは問題ではありませんでした。
ランデイ14

プログラミングのバックグラウンドを持つ人に習得するのが難しいことは、それを失格にしないと言っています。
ノメン14

1

数学を教えるコンピューター言語はありません。数学のみが数学を教えます。つまり、ペンと紙のアプローチ(またはチョークと黒板)、公理、定理、証明。これは数学です。言語がどれほどセクシーであっても、その言語で書かれたプログラムは数学ではなく、数学の単なる応用です。何かを適用するには、まずそれを学ぶ必要があります。


1
プログラミング言語が文字通り数学を教えることを誰も期待していないと思うし、元の質問が文字通り数学を教えるためのプログラミング言語を求めたとは思わない。彼らは、数学の教育に役立ついくつかの演習に使用できるものを求めています。
-user27539

チョーク、黒板
...-quant_dev

同意しない。言語は単なる表現の手段です。チョーク、鉛筆、コンピューター:数学を具体的に表現するために使用される単なるツール。言語は、数学を抽象的に表現するための単なるツールです。Haskell-Curry同型定理を比較します(プログラムは建設的な論理の証明です)
nomen 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.