Egison 2020年の抱負

2019年12月25日

この記事は,2019年Egisonアドベントカレンダーの25日目の記事です.

2019年を振り返り,2020年の抱負をまとめます.

2019年にできたこと

2019年はEgison開発に協力してくれる方々に助けられて,とても充実した一年になりました. 2019年にあった進捗のうち,大きなものをまとめてみます.

パターンマッチ指向プログラミングを提唱する論文を書けた

新しいプログラミング・パラダイム「パターンマッチ指向」を提唱する論文です. Egisonのパターンマッチを活かしたプログラミング・テクニックをまとめています.

この論文を書き始めたのは2018年の11月で,2019年を通して一番がんばったのはこの論文の執筆でした. 無事 <programming> 2020 に採択されて,現在 camera ready (最終提出原稿) 用意しているところです.

これから,3-10年の間にこの論文の内容を,世界中のプログラミング研究者の間で常識にするのが目標です. そのために,よい研究をして,もっとよい論文を書き続けていきたいと思います.

Egison Journal Vol. 1 と Vol. 2 を頒布できた

Egisonを通してできた友人たちに記事を執筆してもらい,Egison Journal Vol. 1とVol. 2として4月と9月に技術書典で頒布しました. Egison Journalを頒布したおかげで,Egisonに興味をもってくれるひと,使ってくれるひとが明らかに増えました. 今後も年一回くらいの頻度でEgison Journalを出していけたらと考えています.

EgisonのパターンマッチのためのScheme・Haskellライブラリを実装できた

2019年に一番進捗があった研究テーマは,Egisonのコンパイル手法の研究でした. 実は,Egisonパターンマッチの実装は,インタプリタ上の実装しか考えていませんでした. しかし,2018年末に,動的型付けの関数型プログラムにEgisonのパターンマッチを変換する手法を考案し,Schemeマクロとして実装に成功しました. そこから,静的型付け関数型プログラムに変換するための拡張方法を考え続け,2019年9月にHaskellメタプログラミングによる実装が動きました. Haskellによるこの実装は,2017年末から楽天技術研究所でEgison開発アルバイトをしてくれていた郡さんがしてくれました.

Egisonのパターンマッチが他のプログラミング言語でも使えるようになったのは,Egisonの考え方を広めるために重要な大きな一歩です. 現在このHaskellライブラリの実装について論文準備中です. (Schemeマクロの実装については,すでにScheme Workshop 2019で論文発表しました.)

Haskellライクな文法のEgisonを実装できた

2019年夏から楽天技術研究所でEgison開発アルバイトをしてくれている服部さんが実装してくれました. Egisonの考え方を広めるためにぜったい必要ではあるけれども,私自身が手を出せていなかったことであったため,非常に助かりました.

2020年にやりたいこと

2020年の予定のうち重要なものをまとめます.

Egisonの入門書を書く

Egison JournalのおかげでEgisonに興味をもってくれるひとが増えたと思うのですが,そこでもっとも重要なのは,読んだらすぐEgisonを使えるようになる入門書だと考えています. これから執筆して,2020年3月の技術書典で頒布する予定です.

Egisonに型システムを実装する

2018年春に楽天技術研究所にインターンに来ていた河田さんが作ってくれた Typed Egison と2019年に実装したHaskellライブラリによって,Egisonパターンマッチの型付け規則はほぼ固まっています. これをEgison本家にもちゃんと実装したいと考えています. 型システム実装の目的は,単にEgisonの使い勝手の向上だけではなく,次のオリジナリティある研究への布石でもあります.

Egisonと定理証明システムの融合についてプロトタイプを作る

Egisonのパターンマッチを数学の定理証明にも使えたら便利であろうというアイデアがあります. 定理証明システムには,CoqやAgda,Leanなどありますが,現在のこれらのシステムを使った証明の記述は,自然言語とくらべて煩雑になっていまいます. Egisonのパターンマッチの記法の導入をベースとした,より簡潔に定理を記述できる証明システムの研究を進めようと考えています.


This website in other langauge: English, 日本語