编译为GHC核心
回答
无论是通过ghc
命令还是通过API,仍无法读取外部核心文件。对不起:(
从你的表示中使用GHC API构建核心语法树可能在理论上是可能的,但这听起来非常痛苦,我会建议瞄准其他后端,你不一定要停止使用GHC ;使用unboxed类型的简单Haskell和unsafeCoerce
可以让你得到非常接近的Core,所以你可以定义你自己的简单的“Core-ish”语言并编译它(实际上,你甚至可以编译GHC Core 本身 ,但这对我的口味来说太过分了。)
您可能也有更好的运气编译为Haskell-that-is-essentially-already-Core。 –
请注意,Core是一种明确的类型化语言,它可能会使得从其他语言生成相当困难(GHC类型检查程序有i推荐所有类型,所以它没有问题)。例如,通常的恒等函数(id = \x -> x :: forall a. a -> a)
变得
id = \(a :: *) (x :: a) -> a
其中a
是一种*
类型变量。它是类型级别forall
绑定的术语级占位符。同样,当调用id
时,您需要为其指定一个类型作为其第一个参数,以便将Haskell表达式(id 42)
转换为(id Int 42)
。这种类型的绑定和类型应用程序不会出现在生成的机器代码中,但它们对验证编译器转换是否正确很有用。
好的一面,可能只是生成Haskell - 如果你能以GHC总是能够确定它的类型的方式生成代码,那么你基本上只是使用Haskell的一个小子集。不过,这是否可以正常工作取决于您的源语言。
- 1. android核心库编译
- 2. 在c编译ImageMagick核心
- 3. .NET核心动态编译
- 4. GHC编译错误
- 5. GHC生成冗余核心操作
- 6. 为什么GHC很难编译?
- 7. 在GHC中加速编译
- 8. Haskell - 在GHC编译问题
- 9. GHC杂乱而编译
- 10. GHC Haskell编译时常量
- 11. 与GHC交叉编译
- 12. 与cabal编译时查看核心
- 13. 在.NET核心编译Sass文件
- 14. 编译器特定的核心转储
- 15. 使用多核心编译g ++
- 16. 使用C++核心库编译错误
- 17. 为mips编译android内核
- 18. Azure AD B2C示例未能编译为.Net核心2.0
- 19. 为什么我的dotnet核心项目重新编译?
- 20. Cocoa-Touch,核心数据:编译器找不到NSManagedObjectContext(+其他核心数据类)
- 21. Yii核心讯息翻译
- 22. 如何更改GHC的编译目录?
- 23. Pandoc无法编译上GHC 7.8.2
- 24. GHC编译错误,但runghc工作
- 25. 在GHC中编译单独的模块
- 26. GHC Haskell的编译时断言?
- 27. 使用-fPIC支持编译ghc
- 28. 多核心编码
- 29. 编辑和编译AOSP核心/系统应用在Eclipse
- 30. 编译android内核
“目前(从版本6.8.2开始),GHC无法读取外部核心文件作为源文件。”您恐怕必须在_internal_ core中生成一个表示并将其传递给GHC。为了你的缘故,我希望我过于悲观,但我相信你需要的远远不止是对ghc-api的几个呼叫。 –