<div dir="ltr"><div>I'm pleased to announce the release of HaRe 0.8, available on hackage [1]<br><br>What's new?<br>===========<br><br>Everything, and nothing.<br><br>Everything in the sense that it has been completely reworked internally to make<br>use of the new API Annotations [2] in GHC 7.10.2, via the ghc-exactprint [3]<br>library.<br><br>Nothing in the sense that the functionality in this version is/should be<br>identical to that in 0.7.2.8<br><br>Limitations<br>===========<br><br>HaRe 0.8 will only work for projects using GHC 7.10.2 for compilation. Compiling<br>HaRe with 7.10.2 and then using it against projects using an earlier compiler<br>will not work, as HaRe needs to be able to invoke GHC to the type checker stage<br>on the project using GHC 7.10.2.<br><br>What is it?<br>===========<br><br>HaRe makes changes to working code, so that it still works once the change is<br>made.<br><br>Refactorings it can do are<br><br>* demote<br><br>  Take a declaration from the level where it is defined and move it down to the<br>  place where it is used. This only works if it is used in one place only.<br><br>* dupdef<br><br>  Duplicate a definition with a new name.<br><br>* iftocase<br><br>  Convert an if declaration to a case declaration.<br><br>* liftOneLevel<br><br>  Move a declaration one level up, adding parameters as needed to pass in<br>  locally declared variables.<br><br>* liftToTopLevel<br><br>  Move a declaration to the top level, adding parameters as needed to pass in<br>  locally declared variables.<br><br>* rename<br><br>  Change a name throughout the project. This makes use of the GHC renamed source<br>  so will not change other names that just happen to be lexically identical, but<br>  are in fact different names.<br><br>It currently has an emacs integration only, assistance in supporting other<br>environnments welcome.<br><br>[1] <a href="https://hackage.haskell.org/package/HaRe">https://hackage.haskell.org/package/HaRe</a><br>[2] <a href="https://ghc.haskell.org/trac/ghc/wiki/ApiAnnotations">https://ghc.haskell.org/trac/ghc/wiki/ApiAnnotations</a><br>[3] <a href="https://hackage.haskell.org/package/ghc-exactprint">https://hackage.haskell.org/package/ghc-exactprint</a><br><br></div>Alan<br><div><br></div></div>