[Haskell-cafe] ANN: HaRe 0.8 - The Haskell Refactorer

Alan & Kim Zimmerman alan.zimm at gmail.com
Mon Oct 5 20:27:30 UTC 2015


Update: Version 0.8.1 is out, which fixes renaming that crosses module
boundaries and preserves CPP directives

On Sun, Oct 4, 2015 at 10:18 PM, Alan & Kim Zimmerman <alan.zimm at gmail.com>
wrote:

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


More information about the Haskell-Cafe mailing list