この記事はCAMPHOR- Advent Calendar 2017 11日目の記事です.
アブストラクト
漸進的型付けは,ひとつの言語の中で静的型付けと動的型付けをスムーズに組み合わせるための技術です.
よく知られた特徴は any
型を使った静的型付けで,
TypeScript や Python といったプログラミング言語には既に実装されています.
しかし,理論と実際のプログラミング言語の間には大きなギャップが存在します.
特に,漸進的型付けの理論で提案されているキャストを用いた動的型検査が実装されていないために,
静的型付けの恩恵を十分に得られていないという問題があります.
この記事では,まず漸進的型付けの理論をコード例を用いて紹介し,
現状の漸進的型付き言語が抱える問題を解説します.
そのあとで,漸進的型付き言語が目指すべき目標を理論的視点から論じます.
それらの目標は,静的型付けを行うこと,キャストを用いた動的型検査を行うこと,
動的型検査を効率よく行うこと,型情報に基づいて最適化を行うことの4段階に分類することができます.
未だ実現されてないこれらの目標を論じることで,
多くの人に漸進的型付けの未来を考えてもらうのが本記事の目的です.