関数型プログラミング言語Haskell Part13
■ このスレッドは過去ログ倉庫に格納されています
0301デフォルトの名無しさん
2010/11/30(火) 21:19:17次のようなデータ型と、それを使った関数があるとします。
data T = T Int Int
f (T x y) = T (x*2) (y*3)
この関数を次のようにして使った時、
a = T 1 2
b = f (f a)
一度目の f の出力値を作る所から二度目の f の入力の間にかけて、
データ型を被せてすぐに剥がすという無駄なことをしているので、
次のように最適化される嬉しいのですが、
b = T (1 * 2 * 2, 2 * 3 * 3)
特に何もしなくても自動的にこのように最適化されるのでしょうか。
あるいは、書き換え規則(RULES)のような
何かコンパイラへのヒントを与えれば自動的に最適化されるのでしょうか。
それとも、自動的には不可能でしょうか。
コンパイラは GHC 6.12.3 を使用しています。
■ このスレッドは過去ログ倉庫に格納されています