大きな身振りで熱弁をふるうSimon PJ氏
大きな身振りで熱弁をふるうSimon PJ氏
[画像のクリックで拡大表示]
GHCコアが内部で行っている最適化
GHCコアが内部で行っている最適化
[画像のクリックで拡大表示]
GHCコアの開発チーム
GHCコアの開発チーム
[画像のクリックで拡大表示]

 プログラミング言語Haskellの処理系「GHC」(Glasgow Haskell Compiler)のメイン開発者であり「Haskellの父」と呼ばれるSimon Peyton Jones(Simon PJ)氏(現在の所属は米マイクロソフトリサーチ)が2016年9月17日に来日し、東京で開催されたイベント「Haskell Day 2016」で講演した。このイベントにはHaskellに興味がある、あるいは業務で利用しているといった100人以上の技術者が参加しており、同氏はそうした技術者とGHCの内部実装や最適化について熱い議論を交わした(同イベントに関するTwitterの発言)。

 同氏は靴も靴下も履いていない裸足で、常に大きな身振りで熱弁をふるった。参加者が黙って聞いていると「質問はないのか」と催促。途中からは参加者から活発に質問が飛び出すようになり、2時間たっぷり熱い議論が繰り広げられた。

 講演のタイトルは「Into the Core:squeezing Haskell into nine constructors」。日本語にすると「GHCのコアはシンプルであり、Haskell全体がわずか9個のコンストラクタに集約される」という意味だ。Haskellは巨大な言語仕様を持つのに対し、GHCのコアは小さくシンプルに保たれている。Haskell/GHCは26年の歴史があるが、GHCのコアで使われる中間言語(ソースコードを基に、処理系が扱いやすい形に変換された形式)はほとんど変わっていないという。

 Haskellは型を持つ言語だが、適切な型を推論してくれる「型推論」という機能を持つ。このため、Haskellプログラマは必ずしも型を指定する必要はない。これに対し、コアで使われる中間言語では、型がすべて明示的に指定されており、高速に型をチェックしている。中間言語が型を持つ言語は珍しいという。原理的には中間言語が型を持っていなくてもコンパイルは可能だが、コンパイラ自体のバグを防ぐためにこのような実装にしている。