プログラミング」カテゴリーアーカイブ

LunarMLと文字列フォーマット

LunarMLをLuaの代替として使う際、Luaの機能を自然に使えると良さそうです。例えば、文字列フォーマット関数 string.format を呼び出す際には現状では引数の型キャストが必要ですが、フォーマット文字列にいい感じの型をつければキャストが不要になるのではないでしょうか。

ML系言語の仲間であるOCamlには、フォーマット文字列が期待される文脈で特別な型付けを行う機能があります。LunarMLでも似たようなことをするといいのではないか、というわけで検討します(検討するだけならタダなので)。

続きを読む

Macで試すBinary Hacks Rebootedその2:数値表現とデータ処理

前回から日が開きましたが、引き続きMacでBinary Hacks Rebootedの内容を試していきます。

今回は「7章 数値表現とデータ処理Hack」の内容を試していきます。サンプルコードは https://github.com/oreilly-japan/binary-hacks-rebooted から取得できます。

$ git clone https://github.com/oreilly-japan/binary-hacks-rebooted.git
$ cd binary-hacks-rebooted

私の環境はApple M4 Pro / macOS Sequoia 15.1.1です。以下のアセンブリコードはAArch64向けです。

続きを読む

「ものが等しい」ということ

最近、「ものの等しさ」について思うところが何点かあるので書き殴っておく。

数学での「等しさ」

ものを数学的な議論に載せる上で、「等しさ」というのは基本的な概念だと思われる。扱う対象の「等しさ」について合意ができない人と数学的な議論はできない。

続きを読む

Macで試すBinary Hacks Rebooted その1:イントロダクション

去る8月28日に、私が執筆に参加した「Binary Hacks Rebooted」が無事に発売されました。

「Binary Hacks Rebooted」はLinuxを前提に書かれたHackが多いです(特に前半)。しかし、読者の中にはMacを使っているという方も一定数いるのではないかと思います。というか、Macを使っている人にも読んでもらいたいです。

もちろん、Mac上でもDocker, multipass, QEMU等を使ってLinuxを動かせば、本の内容は再現できます。しかし、バイナリアンの気持ちとしては、マシンでネイティブに動いているOSを使ってHackしたいものではないでしょうか。少なくとも私はそうです。(まあMac上でネイティブにLinuxを入れるという手もありますが、それだと機材がMacである必要がないのでは?と私は思ってしまいます。)

また、x86-64 Linuxであれば本の内容がそのまま動くのは当たり前(※)なので、違う環境でどうなるか試行錯誤することによって圧倒的成長💪💪💪が見込まれます。(※と言いつつ、Linuxでもディストロによって、あるいはUbuntuであってもバージョンが違うと無変更で動くかはわからないわけですが。本に載っている実行例はUbuntu 22.04のものが多いと思います。)

というわけで、MacでmacOSを使ってBinary Hacks Rebootedの内容を試したいです。

続きを読む

LunarML/Standard MLのブートストラップ問題

LunarMLを含む多くのStandard MLコンパイラーはStandard ML自身で記述されています。すでに動くStandard ML処理系があればSMLで書かれたコンパイラーを動かせますが、Standard ML処理系のない新しいプラットフォームでStandard MLコンパイラーを動かしたい場合はどうすればいいでしょうか?

続きを読む

TwoSumの証明に2週間かかった

前に「浮動小数点数小話」という同人誌を出しましたが、私としては浮動小数点数についてもっとちゃんとした本をいずれ出したいと思っています。執筆に着手するのは早い方が良いので、浮動小数点数についてのまとめノートみたいものを書き始めています。

続きを読む