13
import Data.List
a = foldl' (+) 0 [1..99999999]
main = putStrLn $ show $ a

This program takes a while to run. But a does not depend on anything and thus is constant. It could be perfectly calculated at compile time. Why is not GHC optimizing for this? Is there a flag for it to do so, or should I just replace that kind of constant calculation by the values themselves?

4

2 に答える 2

7

これは、この redditスレッドで取り上げられている議論と同じです。基本的に、あなたが望むのは、実際には珍しい単純なケースです。一定の折り畳みによる最適化は、すぐにゲーデルの定理と停止問題に関する問題に変わります。

于 2013-09-08T12:49:50.233 に答える