Shiika進捗(2022年)
2022-12-25
Techこんばんわ。本記事は言語実装のカレンダー | Advent Calendar 2022 - Qiitaの24日目の記事です。
Shiikaは私が作っているRuby風の文法をもつ静的型付け言語です。静的言語はだいたい性能を重視した設計になっていることが多くて、動的言語は書きやすさを重視した設計が多いのですが、「静的だけど書きやすさ重視の設計」にすることで、静的なエラーチェックと書きやすさを両立したいと考えています。「Rubyっぽい手触りの静的言語」を目指しています。
2022年の主な進捗
- パターンマッチ
- enumに対し、
match x when Some(y) ...
とかでパターンマッチできるようになりました。これがないと始まらないよね。
- enumに対し、
- Module
- RubyのModule(Rustでいうとtraitみたいな)を実装しました。実現方法はSwiftのwitness tableというやつを参考にしました。
- 型推論
- 一部の典型的なケースについて型推論を実装し、具体的にいうとブロックパラメータの型と、メソッド単位の型引数をプログラマが書く必要がなくなりました。
nums.map<String>{|n: Int| n.to_s}
みたいに書かないといけなかったのが、nums.map{|n| n.to_s}
で済むようになりました。快適。
- 一部の典型的なケースについて型推論を実装し、具体的にいうとブロックパラメータの型と、メソッド単位の型引数をプログラマが書く必要がなくなりました。
来年の予定
FileやIOクラスなどを足しつつ、Rustとのインテグレーション周りを改善していく予定です。文法面では可変長引数・キーワード引数はいつかやりたい。あとはパッケージマネージャ…?(夢)
最後に、プログラミング言語処理系が好きな人の集まりおよびその定期ミートアップ - prog-lang-sys-ja参加者のみなさまには大変お世話になりました。来年もやっていきましょう。