2024年も色々あったので振り返りたい。去年の記事:
続きを読む言語処理系がLLVMに依存することの良し悪し
最近のプログラミング言語処理系を見ていると、バックエンドをLLVMに任せているものがちょいちょいあります。Rust, Swift, Juliaなどは一例に過ぎません。
私もプログラミング言語処理系の開発者として、LLVMを使うコンパイラーを触ったりしています。GHCのLLVMバックエンドを触ったり、SML#をAArch64に対応させたり、HaskellからLLVMを呼び出してJITコンパイルしたり、です。
LLVMは強力で便利なのですが、依存することのデメリットも感じるようになってきました。
続きを読むGHCへの私の貢献2024
この記事はHaskell Advent Calendar 2024の24日目の記事です。
私はここ数年、Haskellの主要な処理系であるGHCに趣味で貢献しています。この記事では、今年(2024年)行なった貢献を紹介します。バグ報告のみ(修正は他の人)のものも含みますが、その場合はその旨を書いています。
同様の記事を去年(2023年)も書きました:GHCへの私の貢献2023
GHC 9.12に入ったものは「GHC 9.12の新機能」でも触れています。
こういう記事を書く目的は、一つにはOSSへの貢献の対価として名誉が欲しいというものがあります。そのほかに、自分用の備忘録という目的もあります(あのバグはどのバージョンで修正されたんだっけ、ということがたまにあります)。あとは、単純にGHCの開発状況やホットな話題を皆さんに知って欲しいというのもあります(私の趣味全開なので、非常に偏った視点ではありますが)。
GHCへの貢献方法は去年の記事を読んでください。
続きを読むコンパイル時定数しか受け付けない引数
普通のプログラミング言語の普通の関数は、実行時に決まる値を受け取ることができます。
# 疑似コード
def foo(x: int, y: int) = print(x + y)
x = parseInt(readLine())
# x の値は実行時に決まる
foo(x + 4, 2 * x) # x + 4 や 2 * x の値も実行時に決まる
これに対して、「コンパイル時に決まる値しか受け付けない引数」を表現できると便利な場面があるのではないかと思うことが最近ありました。
続きを読むLunarMLの進捗2024
LunarMLの今年の進捗を振り返ります。この記事は言語実装 – Qiita Advent Calendar 2024の14日目の記事です。
続きを読むLunarMLと文字列フォーマット
LunarMLをLuaの代替として使う際、Luaの機能を自然に使えると良さそうです。例えば、文字列フォーマット関数 string.format
を呼び出す際には現状では引数の型キャストが必要ですが、フォーマット文字列にいい感じの型をつければキャストが不要になるのではないでしょうか。
ML系言語の仲間であるOCamlには、フォーマット文字列が期待される文脈で特別な型付けを行う機能があります。LunarMLでも似たようなことをするといいのではないか、というわけで検討します(検討するだけならタダなので)。
続きを読むTeXConf 2024「ClutTeXの近況と今後の計画」発表スライド
11月30日に開催されたTeXConf 2024で「LaTeX処理自動化ツールClutTeXの近況と今後の計画」というタイトルで発表させていただきました。
続きを読む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向けです。
続きを読むモバイルバッテリーを一新した
これまで使っていたモバイルバッテリーは10年以上使っている気がしてきたので、一新することにした。リチウムイオン電池は普通のゴミには出せないので、処分方法も書いておく。
続きを読む「ものが等しい」ということ
最近、「ものの等しさ」について思うところが何点かあるので書き殴っておく。
数学での「等しさ」
ものを数学的な議論に載せる上で、「等しさ」というのは基本的な概念だと思われる。扱う対象の「等しさ」について合意ができない人と数学的な議論はできない。
続きを読む