あるいは、PureScriptで見る代数学
最近、PureScriptの勉強を始めました。初めはHaskellをやろうとしたのですが、なんだか分からないことが多く、JavaScriptの知識を活かせるPureScriptの方が敷居が低く感じたので、今はPureScriptを勉強しています。
PureScriptというのは、AltJSの1つで、JavaScriptエンジン上で動作する関数型言語です。同じく関数型言語であるHaskellの文法を元にしつつ、JavaScriptエンジン上で動くように、JavaScriptとの相互呼び出しできるようにしたり、Haskellの持つ課題への対策などをしたりなどして、作られた言語らしいです。
関数型言語というのは、数学の「圏論」という理論を元に構築されているらしく、PureScriptの勉強をしていても、数学用語をたくさん見かけます。理論物理学の出身で、学生時代は群論や線形代数が大好きだった私にとっては、とても面白いのですが、数学が苦手な人にとっては敷居が高いだろうなと感じます。
そこで、PureScriptの特徴である型クラスに着目し、PureScriptの持つ代数的な側面について、プログラマ視点からまとめてみようと思います。
この記事では、PureScriptの文法など、言語の解説は行いません。言語について勉強したいという方は、「実例によるPureScript」についての記事が参考になると思います。日本語訳はだいぶ古く、サンプルコードのほとんどは動きませんが、考え方の理解には役立ちます。サンプルコードや演習問題は英語版の方を使うのが良いでしょう。
また、圏論について興味がある方は、「物理学者のための圏論入門」(名古屋大学 谷村省吾 教授)や 檜山正幸のキマイラ飼育「はじめての圏論」が参考になります。ただ、あまり厳密な数学よりも、現実世界とどう結びつけるかという部分が重要だと思っているので、この記事でも数学的な厳密性よりも、使い方にフォーカスをあてられるように書きたいと思っています。
偉そうなことを書き始めてしまいましたが、私自身、PureScriptを始めたばかりの初心者ですので、不備等ありましたら教えていただけるとありがたいです。
また、PureScriptはHaskellのそっくりさん言語なので、Haskell勉強してるけど数学用語分からんよ(>_<)って人にも役立つかもしれません。(自分は先にPureScript勉強して、気が向いたら後からHaskellやって見ようかなってノリですが。。。)Haskellの型クラスとも若干の違いがあるようなので適当に読み替えてやってください。
それでは、はじまりはじまり〜〜〜👏
目次
- イッツ、ショータイム!!
- 等しいやつと、大きいやつと、小さいやつ
- グループで群れているやつら
- SemiGroup型クラス
- Monoid型クラス
- Group型クラス
- Commutive型クラス
- LeftAction型クラス・RightAction型クラス
- かんかん照りのビーチと浮き輪
- SemiRing型クラス
- Ring型クラス
- DivisionRing型クラス
- CommutiveRing型クラス
- EuclideanRing型クラス
- Field型クラス
- 真偽のほどはいかに
- HeytingAlgebra型クラス
- BooleanAlgebra型クラス
- カテゴリー5接近中
- Semigrpoupoid型クラス
- Category型クラス
※書き上がったものから公開していくので順番通りではないかもしれません。