最近、中国語の勉強ばかりしていたので、リハビリがてらRustでLisp処理系を作る本を買ってみました。
多分、本の内容もここにある気がして、買わなくても良かったのではと思うが筆者にお金が入るならOK。
SICPにのっているような簡単なインタプリターを作ります。一回でもやったことがあれば、あーなるほどと思いながら最後までいけるはずです。本文の説明は簡潔すぎるので、あまり役に立たない。
ただ、Rustのコードは綺麗にまとまっていて、勉強なりました。Rustはこういうことしたいんだけど、みんなはどう書いているのかなってのが分からなくて困ることが多い。Testも簡潔にまとまっていて、処理系を作り込みながら自然にテストが通っていきます。ただ、Rustの場合ある程度プログラムの完成度が高くないと、テストコードのコンパイルが通らないので、そこだけはしょうがないかなって思いながら進めてました。このコードを写経するだけでも、あーなるほどと思う所が多かったです。
特に何も無くても基本Result型を返すようにして、その上では?;で処理しているのを見て、あーなるほどと思いました。
それっぽく動いたところ
Rustで作る長門Lispそれっぽくうごきだした。 pic.twitter.com/Vsj16w13Bi
— natsutan (@natsutan) 2022年9月18日
Lispの勉強よりは、ちょっとしたRustの写経対象としてお勧めします。