【问题标题】:Searching for rewrite rules搜索重写规则
【发布时间】:2016-07-29 06:07:39
【问题描述】:

有没有办法浏览或搜索重写规则?当我使用 -ddump-rule-firings-ddump-rule-rewrites 之类的标志时,我只会得到触发的规则的名称和它导致的重写,而不是实际的规则本身......

理想情况下,我希望通过 GHCi 了解哪些重写规则在范围内,但实际上我愿意满足于基础中存在的重写规则的详尽列表。

【问题讨论】:

  • 我只想为他们服务。它们以{-# RULES 开头。不幸的是,他们不是一等公民。
  • 这是一个有效的请求。并且至少应该很简单地查询 GHCi 以获取具有某个常量作为 LHS 上最外层符号的所有规则(因为规则被附加到它们上)。我建议您为它打开一个功能请求。对于 GHC 的初学者贡献者来说,这将是一项不错的任务!
  • @JoachimBreitner 如果没有人对此有一个好的答案,我会继续这样做 - 如果它被接受,甚至可能会尝试实施它(我一直在寻找一个开始黑客攻击的好地方多年来一直在 GHC 上)!
  • 我认为目前没有其他的。您可以使用 haskell-src-exts 来解析所有 RULE 编译指示,但这对于您现在想要的内容可能有点过头了。

标签: haskell ghc


【解决方案1】:

好吧,仍然希望对此有一个好的答案,但如果没有,我继续按照 pdexter 的建议进行操作,并 grep'd base 获取规则。 Here are the rules in base 4.9.


对于任何有兴趣复制此内容的人:

  • 克隆http://git.haskell.org/ghc.git
  • 导航到ghc/libraries/base
  • grep 递归pcregrep -Mr '\{-# RULES(.|\n)*?#-\}' .

【讨论】:

    猜你喜欢
    • 2011-04-14
    • 2017-12-19
    • 2012-03-06
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多