2010-07-09 31 views
5

haskell-src-exts包具有用於漂亮地打印Haskell AST的功能。我想要做的是改變它在某些構造函數上的行爲,就我而言,SCC編譯指示的打印方式。因此,其他一切應按默認方式打印,只有SCC的處理方式不同。是否可以在不復制source file並進行編輯的情況下執行此操作,這正是我現在正在做的事情?從haskell-src-exts中修改漂亮的打印機

回答

2

那麼,圖書館已經做了一件正確的事情,使用漂亮的類型類。接下來的挑戰是如何爲要打印的構造函數選擇不同的實例。理想情況下,您只需要新鍵入您關心的AST節點,並以某種方式將其替換爲AST。

現在,問題在於庫導出的Haskell AST的類型結構是固定的。它沒有,例如使用two-level types,這會讓你用newtypes代替樹的某些部分。所以你必須重新定義AST的類型到你想改變類型的節點。

+0

這種技術如何被用來取代AST中的節點?假設我想用一些自定義類型「MyArith」替換(在引用論文的定義中)'Term'中的'Arith'。 'Term'是否被定義爲使用'Arith'? – 2010-07-10 18:35:09