Pakiet haskell-src-exts służy do drukowania atrakcyjnego obrazu Haskell AST. Chcę zmienić jego zachowanie na niektórych konstruktorach, w moim przypadku sposób, w jaki drukowane są pragnienia SCC. Więc wszystko inne powinno być wydrukowane w sposób domyślny, tylko SCC są obsługiwane inaczej. Czy można to zrobić bez skopiowania source file i edycji, co robię teraz?Modyfikowanie ładnej drukarki za pomocą komend haskell-src-exts
5
A
Odpowiedz
2
Cóż, biblioteka zrobiła jedną rzecz dobrze, używając klasy dla Pretty. Wyzwaniem jest wtedy, jak wybrać inną instancję dla konstruktorów, które mają być drukowane inaczej. Najlepiej byłoby po prostu wprowadzić nowy węzeł AST, o który ci chodzi, i jakoś go zastąpić AST.
Problem polega na tym, że Haskell AST eksportowany przez bibliotekę ma poprawioną strukturę typu. Nie działa, np. użyj two-level types, która pozwoli ci zastąpić nowe typy dla części drzewa. Więc musiałbyś przedefiniować typ AST w dół do węzła, który chcesz zmienić typ.
Jak można tę technikę zastąpić węzeł w AST? Powiedzmy, że chcę zastąpić (w definicjach z cytowanego artykułu) 'Arith' w' Term' z pewnym niestandardowym typem 'MyArith'. Czy "Term" nie jest ustalone z jego definicją użycia 'Arith'? –