gpt4 book ai didi

haskell - 比较 ghc 中生成的代码

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

C 世界中比较两个 C 片段的常见做法是查看它们生成的程序集。我想知道在以下情况下 GHC 会生成什么代码:

afmap :: Functor f => (a -> b -> c) -> f b -> a -> f c
afmap fn fb a' = (fn a') <$> fb


afmap  = flip . (((.).(.)) fmap ($))

所以我试过:
$ ghc -S test.hs -o test.S

这(不出所料)产生了或多或少不可读的代码。

评估 ghc 如何优化代码的正确方法(如果有)是什么?

最佳答案

汇编可能有点太低级了。你可能想看看 Core,GHC 的中间优化语言。

本质上,GHC 将 Haskell 转换为 Core,对其进行各种优化传递,并最终将 Core 转换为 STG,然后转换为 C——以及 native 代码生成器(即汇编)或通过 LLVM(我不知道)很多关于那个特定的途径)。

特别是,Core 仍然是相当高级的,并且有点类似于 Haskell(即,它具有类似的抽象,如模式匹配和惰性求值)。如果两个程序产生相同的核心,那么显然它们产生相同的机器代码。

关于haskell - 比较 ghc 中生成的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37916731/

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