FGJを読む(1)
2016-10-24
Tech新シリーズです。FJ (Featherweight Java)の論文のFGJのところを読んでいきます。 将来的にジェネリクスがある静的型言語を自作したいという目標があるのでその準備です。
FJとは
型理論の研究のために考案された、Javaの「とても小さい」サブセットです。 論文はこちら。
あとTAPLにもFJの章があります。
FGJ (Featherweight GJ)とは
上の論文の3章で取り上げられている、FJの拡張(言語機能を足す)のサンプルで、FJにジェネリクスを足したものです。 GJはFJより前からあったもので、Javaにジェネリクスを足すという研究です。論文はこちら。http://homepages.inf.ed.ac.uk/wadler/papers/gj-oopsla/gj-oopsla-letter.pdf
Java+Generics→GJ、FJ+Generics→FGJという関係です。
構成
読み始める前に構成を確認しておきます。
- 3 FEATHERWEIGHT GJ : FGJの概要
- FGJ(およびGJ)には2つの実装方式が考えられる
- 3.1 Syntax : 追加構文の定義
- 3.2 Typing : FGJの型付けについて
- 3.3 Reduction
- 3.4 Properties 健全性の証明、FJとの後方互換性の証明
- 4 COMPILING FGJ TO FJ : FGJプログラムを等価なFJプログラムに変換する (2つめの実装方式)
- 4.1 Erasure of Types
- 4.2 Field and Method Lookup
- 4.3 Erasure of Expressions
- 4.4 Erasure of Methods and Classes
- 4.5 Properties of Compilation
ここまでがFGJの話っぽいので、3章と4章を読んだらゴールということにします。