2022/5/21 関数適用の表現、その他稚拙な表現を修正。
最近、プログラミングにおけるモナドについて調べていて、モナドと言うものがどんなものなのか掴み始めてきて、ある程度これが誤解なのかそうでないのか見分けられるようになってきたので、モナドのよく見かける誤解について書いていく。
続きを読む2022/1/13 型コンストラクタを「抽象型」としていたのを「多相型」に修正しました
最近になって、プログラミングにおけるモナドには「モナド則」という規則があることを知り、これを使えばこれまた最近聞いた「JavaScriptのPromiseはモナドである」というのが本当かどうか確かめられるのでは?と思ったので確かめてみた。
続きを読む#JavaScript の #Promise は #モナド である、という話を聞いたのだが、それはマジなんでゲスか?#プログラミング
— Ukicode (@opaupafz2) 2021年12月24日
前回をより理解しやすくするための補足記事的なもの。
opaupafz2.hatenablog.com
今回、「代数的データ型」について、自分なりの解釈を述べていこうと思う。これによって前回の記事で自分が何を言いたかったのかより理解を深めていただければ幸いである。
注意してほしいのが、自分が理解しやすいように、本来数学的に解説すべきところを、論理回路的に解説している邪道な記事なので、そこはご了承いただきたい。
関数型プログラミングを学ぶ際に登場することのある単語として「代数的データ型」というものがあり、直和型はこの代数的データ型の一種である。
代数的データ型において、「列挙型はCの列挙体(enum
)、直積型はCの構造体(struct
)に相当する」という説明に関しては概ね異論はないのだが、その中で一つだけ、「直和型はCの共用体(union
)に相当する」という説明だけはかなり違和感のある説明だと思ったため、今回、テーマとして「直和型をC共用体だと説明するのは誤解を生むだけ」という主張を書いていこうと思った次第である。
前編からの続き。
opaupafz2.hatenablog.com
前作: Pythonで始めるプロトタイプベースOOP
opaupafz2.hatenablog.com
opaupafz2.hatenablog.com