
Chaddaï Fouché a écrit :
2008/9/16 Mauricio
: Hi,
I would like to write a Haskell pretty-printer, using standard libraries for that. How can I check if the original and the pretty-printed versions are the same? For instance, is there a file generated by GHC at the compilation pipe that is always guaranteed to have the same MD5 hash when it comes from equivalent source?
There is not, though I have a suggestion : Am I correct in assuming that you mean "equivalent source" in the sense that only the formatting (and eventually {;} as a layout format consequence) differs ?
Exactly! And with comments removed, since the last time I checked Language.Haskell.* used not to preserve that.
Then the sequence of tokens from the source ought to do the trick as long as you delete location information (map unLoc) and transform ITvocurly ("virtual" braces for layout induced blocks) into ITocurly (real braces for no-layout blocks) (and same for ITvccurly) (it's just another map). If only the formatting differs, those two should be identical.
Good idea. I think that's all that I need. I can write a hash function that filters and transforms like that. Thanks, Maurício