Most functional compiler

もっとも関数的なコンパイラ

受賞者:Ben Lynn

引用元:https://www.ioccc.org/2019/lynn/prog.c

審査員・作者による説明:https://www.ioccc.org/2019/lynn/hint.html

動作

Haskellサブセットのコンパイラ。

コンパイルすると、HaskellからCコード断片を生成するコンパイラになっている。

$ gcc -o prog prog.c

$ (./prog < fib.hs; cat prog.c) > fib.c

生成されたCコード断片とprog.cを連結してコンパイルすると、Haskellコードの意味で動作する。

$ gcc -o fib fib.c

$ ./fib
832040

解説

かなり簡素にしたHaskellサブセットを受理して、独自のバイトコードを出力する。

出力のバイトコードはC言語の#defineにくるんで出力し、prog.cと結合してコンパイル・実行することが前提になっている。

セルフホストするコンパイラ、正規表現の文字列列挙、強連結成分分解のサンプルコードが添付されている。