gpt4 book ai didi

haskell - 编译到 GHC 核心

转载 作者:行者123 更新时间:2023-12-04 10:05:12 29 4
gpt4 key购买 nike

我想为一种可以产生 GHC Core 的简单语言创建一个前端。然后我想获取这个输出并通过正常的 GHC 管道运行它。根据this page , 不能直接通过 ghc 命令实现。我想知道是否有任何方法可以做到这一点。

理想情况下,我期望对 ghc-api 进行一些函数调用,但我也愿意接受任何建议,包括(不那么广泛)在 GHC 源中进行黑客攻击。任何指针都会有所帮助!

最佳答案

请注意,Core 是一种显式类型的语言,因此很难从其他语言生成(GHC 类型检查器已推断出所有类型,因此在那里没有问题)。比如常用的恒等函数(id = \x -> x :: forall a. a -> a)变成

id = \(a :: *) (x :: a) -> a

在哪里 a是一种类型变量 * .它是类型级别 forall 的术语级别占位符捆绑。同样,当调用 id你需要给它一个类型作为它的第一个参数,所以 Haskell 表达式 (id 42)被翻译成 (id Int 42) .这样的类型绑定(bind)和类型应用程序不会出现在生成的机器代码中,但它们对于验证编译器转换是否正确很有用。

从好的方面来说,有可能只生成 Haskell——如果你能以 GHC 总是能够确定其类型的方式生成代码,那么你基本上只是使用 Haskell 的一小部分。不过,这是否可行在很大程度上取决于您的源语言。

关于haskell - 编译到 GHC 核心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8927010/

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