なんか考えてることとか

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

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

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

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

続きを読む

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

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

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

続きを読む

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

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

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

続きを読む

PHPで始めるプロトタイプベースOOP (後編)

前編からの続き。
opaupafz2.hatenablog.com

前作: Pythonで始めるプロトタイプベースOOP
opaupafz2.hatenablog.com
opaupafz2.hatenablog.com

続きを読む

PHPでバイナリを扱う方法

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

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

続きを読む

数字を含む文字列を安易に比較してはいけないという話

早速ですが、問題です。

"9"と"10"、比較するとどちらが大きいでしょうか?

ソートする際に文字列を比較することがある。その際、文字列に数字が含まれている場合、自分の思った通りに動かないことがあると言うことを今回書かせていただこうと思う。

続きを読む