編譯爲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的幾個呼叫。 –