プログラムの処理は,いつも効率的であるとは限りません。非効率的な処理があれば,別の効率的な処理に置き換える必要があります。プログラムのアルゴリズムやデータ構造に問題がない場合には,こうした最適化は通常は処理系が行います。 しかし,処理系に実装されている最適化機能は完璧ではありません。プログラマが最適化を行ったほうがいい場合もあります。GHCには,プログラマが最適化の方法を処理系に指示するための「書き換え規則(Rewrite Rules)」という機能があります(参考リンク1,参考リンク2)。 今回は,書き換え規則の基本的な使い方と,GHCに付属するライブラリで使われている最適化テクニックの一部を紹介します。 RULES指示文に書き換え規則を記述 書き換え規則は,「RULES指示文」をソースコードに埋め込むことで利用します。例を見てみましょう。 前回,IntとWordとの間の型変換に,from