簡體   English   中英

GHC核心的`Show`實例

[英]`Show` instance for GHC core

我正在嘗試使用GHC核心數據類型。 我能夠將我的Haskell源代碼編譯為類型為Bind CoreBndr核心表示。 我們知道此數據類型沒有默認的Show實例。 有一種方法可以很好地打印這種表示,但它有太多與之相關的噪音。 我想將GHC核心視為任何其他代數數據類型並用它來編寫函數。 如果我們有一個GHC核心的Show實例會容易得多。 有沒有人寫過我可以重用的節目實例?

此外,社區如何編寫和驗證處理GHC核心的程序?

在經歷垃圾箱在GHC和思考同樣的問題,我可以自信地說,一個天真的實現Show在GHC是不是你想要的。 這是因為內部GHC在其許多數據類型中都有遞歸。 例如,在TyConAlgTyConRhsDataCon之間我們有:

TyConAlgTyCon ,其中包含AlgTyConRhs

AlgTyConRhs包含data_cons :: [DataCon]作為其記錄字段之一。

DataCon包含dcRepTyCon :: TyCon作為其字段之一。

因此我們走了一圈。 由於Show工作方式,如果您嘗試打印它,這樣的遞歸將創建無限輸出。

為了獲得具有數據構造函數和所有顯示的“漂亮”自定義表示,您必須自己編寫它。 這實際上有點挑戰性,因為你必須考慮和調試這樣的遞歸情況,默認漂亮的打印機已經解決了。

這很乏味,很多標簽都打開了,但這是一個很好的學習經歷:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM