なんか考えてることとか

変な人が主にプログラミング関連で考えていることをまとめる。

モナド初心者が解く、モナドのあらゆる誤解

2022/5/21 関数適用の表現、その他稚拙な表現を修正。

最近、プログラミングにおけるモナドについて調べていて、モナドと言うものがどんなものなのか掴み始めてきて、ある程度これが誤解なのかそうでないのか見分けられるようになってきたので、モナドのよく見かける誤解について書いていく。

続きを読む

モナド則からJavaScriptのPromiseがモナドであることを確かめてみた

2022/1/13 型コンストラクタを「抽象型」としていたのを「多相型」に修正しました

最近になって、プログラミングにおけるモナドには「モナド」という規則があることを知り、これを使えばこれまた最近聞いた「JavaScriptのPromiseはモナドである」というのが本当かどうか確かめられるのでは?と思ったので確かめてみた。

続きを読む

代数的データ型を論理回路で理解する記事

前回をより理解しやすくするための補足記事的なもの。
opaupafz2.hatenablog.com

今回、「代数的データ型」について、自分なりの解釈を述べていこうと思う。これによって前回の記事で自分が何を言いたかったのかより理解を深めていただければ幸いである。
注意してほしいのが、自分が理解しやすいように、本来数学的に解説すべきところを、論理回路的に解説している邪道な記事なので、そこはご了承いただきたい。

続きを読む

直和型を「C言語の共用体に相当する」と説明するのは、もはや誤解を生むだけである

関数型プログラミングを学ぶ際に登場することのある単語として「代数的データ型」というものがあり、直和型はこの代数的データ型の一種である。

代数的データ型において、「列挙型はCの列挙体(enum)、直積型はCの構造体(struct)に相当する」という説明に関しては概ね異論はないのだが、その中で一つだけ、「直和型はCの共用体(union)に相当する」という説明だけはかなり違和感のある説明だと思ったため、今回、テーマとして「直和型をC共用体だと説明するのは誤解を生むだけ」という主張を書いていこうと思った次第である。

続きを読む

PHPでバイナリを扱う方法

PHPは90年発のプログラミング言語にしては、バイナリを扱う方法に乏しく、思ったようにバイナリを扱えないことが多い。バイナリを扱った事例も少ないためか、バイナリを扱うためのイディオム的な物もなかなか見つからない。

そこで、PHPでバイナリを極力効率的に扱う方法をこの記事に記すことで、より多くの人にPHPでバイナリを扱う際の助けになればと思う。

続きを読む