[英]`Show` instance for GHC core
我正在嘗試使用GHC核心數據類型。 我能夠將我的Haskell源代碼編譯為類型為Bind CoreBndr
核心表示。 我們知道此數據類型沒有默認的Show
實例。 有一種方法可以很好地打印這種表示,但它有太多與之相關的噪音。 我想將GHC核心視為任何其他代數數據類型並用它來編寫函數。 如果我們有一個GHC核心的Show
實例會容易得多。 有沒有人寫過我可以重用的節目實例?
此外,社區如何編寫和驗證處理GHC核心的程序?
在經歷垃圾箱在GHC和思考同樣的問題,我可以自信地說,一個天真的實現Show
在GHC是不是你想要的。 這是因為內部GHC在其許多數據類型中都有遞歸。 例如,在TyCon , AlgTyConRhs和DataCon之間我們有:
TyCon
有AlgTyCon
,其中包含AlgTyConRhs
。
AlgTyConRhs
包含data_cons :: [DataCon]
作為其記錄字段之一。
DataCon
包含dcRepTyCon :: TyCon
作為其字段之一。
因此我們走了一圈。 由於Show
工作方式,如果您嘗試打印它,這樣的遞歸將創建無限輸出。
為了獲得具有數據構造函數和所有顯示的“漂亮”自定義表示,您必須自己編寫它。 這實際上有點挑戰性,因為你必須考慮和調試這樣的遞歸情況,默認漂亮的打印機已經解決了。
這很乏味,很多標簽都打開了,但這是一個很好的學習經歷:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.