Rust でプログラミング言語を作りはじめた

Katashin
·
公開:2025/9/18

常々 TypeScript でコードを書いてて、ああ、もっとこうであってほしいなと思うことがあり、それなら一回言語を自作してみようということでやってみている。みんな最近 Rust を使っているし、勉強がてら Rust で書いている。

完全におもちゃを作っている気持ちで、みんなに使ってもらうみたいなことは考えていないし、そもそもできあがらない予感もしているが、TypeScript のように JavaScript のライブラリが簡単に使えつつ、JavaScript との構文上の互換は目指さず、よりモダンな構文で書けるトランスパイラにしようとしている。

この記事で書いたような構文も実装してみたい。

Rust で本格的にコードを書くのはこれが初めてだが、普段使うことのある言語とはまた違った頭の使い方をするので新鮮で楽しい。ライフタイムの概念によって値のスコープをかなり意識させられるが、コンパイラが丁寧に情報をくれるのでなんとかなっている。感覚的にはスコープでも型パズルしてる感じ。

struct や enum に対して impl で実装を付与する感じとか、trait の概念やパターンマッチとかを見ていると、関数型言語だなーと思う。impl で実装した関数の呼び出しについて、構文上はメソッド呼び出しっぽくなっているが、第一引数に必ず対象のオブジェクトを渡す関数呼び出しとして扱われていそうにみえる。オブジェクト指向よりもこういう感じのほうが好みだ。