作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个依赖于优化的模块。我想在 ghci 中测试这个模块。但是在 --interactive
开始 ghc模式自动禁用优化;如果我用 -O
编译模块然后尝试在交互式 session 中加载它,ghc
坚持以解释模式加载它。
对于区分优化和未优化模块的简单测试用例,isOptimized
下面的计算结果为 True
开启优化,但 False
关闭优化:
isOptimized :: Bool
isOptimized = g
g :: Bool
g = False
{-# NOINLINE g #-}
{-# RULES "g/True" g = True #-}
最佳答案
使用 ghci -fobject-code -O Test.hs
或 cabal repl --ghc-options="-fobject-code -O"
.更详细地说:
-fobject-code
flag 调用 ghci . -fobject-code
之后给出优化标志在命令行上,或在模块顶部的 OPTIONS_GHC pragma 中。尝试ghc --interactive -O -fobject-code
产生“-O 与 --interactive 冲突;-O 被忽略”的警告。这可能是一个错误。 cabal repl
,您需要在命令行(即 cabal repl --ghc-options="-fobject-code -O"
)或编译指示中传递标志。 Cabal(当前)丢弃在 .cabal 文件中设置的优化标志 ghc-options
调用 ghci 时;实际上,它明确设置了 -O0
反而。这可能是一个错误。 -fobject-code
更改优化标志,构建工件就不会失效。保持开启。如果,从头开始,你有
-fobject-code
在你的 .cabal 文件中设置,运行
cabal repl
它编译模块,然后记住您需要在命令行上设置 -O 并运行
cabal repl --ghc-options=-O
,ghc 将愉快地加载先前编译的、未优化的模块。这也可能是一个错误。
{-# OPTIONS_GHC -fobject-code -O #-}
在模块的顶部。无论您如何调用 ghci,您都将获得优化的代码。我还没有调查在某些但不是所有模块都具有编译指示的多模块情况下会发生什么。
g
在 repl 中总是会产生
False
,因为 repl 输入不受重写规则的约束。
关于haskell - 如何在 GHCI 中加载优化代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27881725/
我正在开发一个需要能够平均三个数字的 Facebook 应用程序。但是,它总是返回 0 作为答案。这是我的代码: $y = 100; $n = 250; $m = 300; $number = ($y
我只是无法弄清楚这一点,也找不到任何对我来说有意义的类似问题。我的问题:我从数据库中提取记录,并在我的网页上以每个面板 12 条的倍数显示它们。因此,我需要知道有多少个面板可以使用 JavaScrip
我是一名优秀的程序员,十分优秀!