[Haskell-cafe] HaRe (the Haskell Refactorer) in action - short screencast

Claus Reinke claus.reinke at talk21.com
Mon Jun 22 19:02:33 EDT 2009

I've heard that many Haskellers know HaRe only as a rumour. It has 
been many years since the original project finished, and HaRe hasn't
been maintained for quite some time, so just pointing to the sources 
isn't quite the right answer. 

The sources are still available, and build with GHC 6.8.3 (I had to fix
one lineending issue on windows, iirc, and copy one old bug fix that
hadn't made it into the latest release), but there is currently noone with 
the time or funding for maintenance, fixing bugs, making releases, or 
ironing out practical issues. If anyone would provide funding, people to 
do the work could be found, but the effort would probably be better 
spent on reimplementing the ideas in a GHC / Cabal environment 
(instead of the Haskell'98 environment targetted by our "Refactoring 
Functional Programs" project). If you've got the funding, please get
in touch - even a three month run could get something started at least!-)

In principle, the project experiences and lessons learned are quite well 
documented at the project site 


but that doesn't give anyone an idea of what working with HaRe was 
like. With the recent interest in screencasts, I thought I'd make a little
demo, for archival purposes. Nothing fancy, using only features that 
were already present in HaRe 0.3 (end of 2004), and not all of those, 
on a tiny 2-module example (screenspace is a bit crowded to keep 
the text readable on YouTube). 

I hope it might give a rough idea of what the papers, slides and reports 
are talking about, for Haskellers who weren't around at the time:


For the old HaRe team,

------------------- YouTube video description:
HaRe - the Haskell Refactorer (a mini demo) [4:10]

The Haskell Refactorer HaRe was developed in our EPSRC project 
    "Refactoring Functional Programs" 
Building on Programatica's Haskell-in-Haskell frontend and Strafunski's 
generic programming library, it supported module-aware refactorings 
over the full Haskell'98 language standard. Interfaces to the refactoring 
engine were provided for both Vim and Emacs (this demo uses HaRe 
via GVim on Windows).

While HaRe has continued to see occasional contributions by students 
and researchers, who use its Haskell program transformation API as a 
platform for their own work, it is not currently maintained. As the Haskell 
environment marches on, this demo is meant to record a snapshot of 
what working with HaRe could be like when it still built (here with GHC 6.8.3). 

The lessons learned (note, eg, the preservation of comments, and the 
limited use of pretty-printing, to minimize layout changes) are well 
documented at the project site, and should be taken into account 
when porting the ideas to the GHC Api, or other Haskell frontends.

More information about the Haskell-Cafe mailing list