Profile cover photo
Profile photo
Alan & Kim Zimmerman
Alan & Kim's interests
View all
Alan & Kim's posts

The long wait for HaRe for GHC 7.10.2 is nearly over.

The current wip branch is complete, and just needs further shakeout testing.

For the brave, it can be tried by installing
and then

Please note: The HaRe tests will not run if you build via stack, something to do with the individual cabal files in the the test data and ghc-mod


Post has attachment
Now that GHC 7.10.2 is finally out, we have released the next version of ghc-exactprint on hackage.

This is the result of a tremendous amount of work and refinement by +Matthew Pickering , and some from me too.

We are confident that it can fully round trip most of hackage, bar a few known issues such as mult-line string literals in pragmas.

Work is in progress to integrate it into HaRe, and initial signs are very promising, judging by the amount of code that can be deleted.

The major difference is that tokens are completely gone, and the refactorings take place against ParsedSource rather than Renamed. To support variable lookup, there is a NameMap which indexes each Located RdrName to the corresponding Name.

After a long gestation ghc-exactprint is finally ready for use against GHC 7.10.2, as soon as it is released. It currently builds and passes tests against the ghc-7.10 branch, as well as GHC master.

Version 0.3 will be made available on hackage as soon as GHC 7.10.2 is released.

For people who can't wait and have ghc-7.10 built, the project is available at

The next steps will be to work AST transformations into ghc-exactprint, driven both by MatthewPickering's GSOC project and the integration of ghc-exactprint into HaRe.

I am conteplating attending ICFP this year, and I see all sorts of deadlines appearing on haskell-cafe.

I am not an academic, and have not attended something like this before.

Would there be any interest in my presenting anything on the state of HaRe and/or the enabling GHC changes in 7.10, and if so what form should it take?

I suspect just getting together with interested people may be the best way.

Any advice will be gladly accepted.


Post has attachment
A quick State of the nation.

GHC 7.10 RC2 will have API Annotations in it which will allow full round tripping of source code without using tokens.

A library that does this roundtripping is at

This is being integrated into HaRe in the ghc-7.10 branch, and is currently able to do the ifToCase transformation, as the initial proof of concept for the new architecture.  This will result in a considerable simplification of the code, as only the AST now needs to be manipulated (together with the annotations), and all the fiddly token stuff falls away.

So active development of HaRe is starting again, which is being helped by Matthew Pickering who has begun to be involved in the process. There is still plenty of scope for others to get involved, it is a massive project, so please feel free to chip in.

We have also decided to rather use a mailing list than this community, so the emphasis will be shifting to the list at!forum/hare, please join it.


HaRe is now on hackage. It has mainly been a stabilisation process, with focus on renaming of real world source code.

HaRe Version corrects the target file path construction by using the cabal file path rather than the current directory path.

Version is out

This one adresses the issue of refactoring multiple main modules : executables, tests, benchmarks, etc.
Wait while more posts are being loaded