2010-07-09 9 views

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.

+0

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'? –