2022年9月
2022-10-04
Diary月報を再開する。
面倒になってきたという理由でやめてみたのだけど、一月ごとに進捗をまとめる作業がないと「進んでる感」を感じられなくてよくない、ということがわかってきた。
あとは締切のない趣味開発だとしても大まかな計画があったほうが、「今月末には○○ができているはず」という期待ができてよい。
Shiika
型推論
"Complete and Easy Bidirectional Typechecking for Higher-Rank Polymorphism"という論文の型推論アルゴリズムをShiikaで実装した。 https://github.com/yhara/BidirectionalTypechecking 実装したというかRust版の移植だけど。最初はRust版を読むだけで理解できたらいいなと淡い期待を抱いてたんだけどさすがに無理だったので論文のほうもざっくり目を通した。
で、肝心のShiikaに使えるかどうかだけど、Shiikaはメソッド呼び出しという概念があるのでそのままでは適用できなそうだった。しかし改めて推論したい箇所を整理してみると、いくつかの頻出パターンの推論をやるだけでだいぶ快適になることがわかったので、それをやることにした。
Timeクラス
組み込みのTimeクラスの設計をした。localtimeだけでよければ簡単に使えて、タイムゾーンを扱う場合もそれなりに対応できる、というところを目指すつもり。
実装も始めたけど、無限にyak shavingが発生している。 https://github.com/shiika-lang/shiika/issues/409
proc macroの解説記事を書いたりした。
10月の予定
- Timeクラスを完成させる。
if let
がないと辛すぎるというのがわかったので、それを入れる。それに伴い、普通の変数宣言もlet
必須にするかも?大きい非互換なのでやるなら早めにしたい。- method_tyargsの型推論