Call Arity と融合変換

Posted on 金 26 7月 2019 in プログラミング言語 • Tagged with Haskell, GHC, 融合変換, コンパイラ, 最適化

GHC は,最適化のため Call Arity と呼ばれるコード解析を行っている.この解析で,自由変数が何個引数を持っていいかを判定し,イータ展開を可能にする.リストにおける融合変換とも密接な関係のある解析だ.こいつの存在とどういうことをやっているかはだいたい知っていたんだけど,ちょっと詳しく知りたい事例があったので調べてみた.そのメモ.

なお元ネタは,Breitner (nomeata) 先生の Call Arity

イータ展開と最適化

Haskell は知っての通り関数型プログラミング言語なので,息を吐くように関数を第1級として使うし,標準ライブラリに無数の高階関数がある.関数は全てカリー化されていて …


Continue reading