gpt4 book ai didi

haskell - 为什么 GHC 不针对常量进行优化?

转载 作者:行者123 更新时间:2023-12-03 15:30:21 24 4
gpt4 key购买 nike

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

该程序需要一段时间才能运行。但是 a不依赖于任何东西,因此是恒定的。它可以在编译时完美计算。为什么 GHC 不为此进行优化?是否有这样做的标志,或者我应该用值本身替换那种常量计算?

最佳答案

这不是一个完美的解决方案,但正如 kqr 已经指出的那样,您当然可以使用 Template Haskell 实现您的目标:

{-# LANGUAGE TemplateHaskell #-}

import Language.Haskell.TH
import Data.List

a :: Integer
a = $( return . LitE . IntegerL $ foldl' (+) 0 [1..99999999] )

main = print a

这将生成整数文字 4999999950000000从 fold 表达式开始,在实际开始编译程序之前。

关于haskell - 为什么 GHC 不针对常量进行优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18683374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com