A good way to specify such refactorings is as a Haskell module. For example:
module PreludePre_7_6 where import Prelude hiding ( catch ) Or, an example of avoiding the Eq / Show / Num debacle: module PreludePre_7_4 (module Prelude, Num) where import Prelude hiding ( Num ) import qualified Prelude as P instance template (Eq a, Show a) => Num a where instance P.Num a (Uses my instance template proposal - though with different keywords - https://github.com/mgsloan/instance-templates ) Let's say we wanted to rename "catch" to "unsafeCatch" module PreludePreUnsafeCatch (module Prelude, catch) where import Prelude hiding (unsafeCatch) catch = unsafeCatch Then, an automated refactoring system is "simply" a sourcecode-based module inliner. Quite a bit of effort, certainly, but it's much better than coming up with a whole new notation for refactorings. -Michael On Thu, Aug 30, 2012 at 6:34 AM, Alexander Bernauer <alex-hask...@copton.net> wrote: > Hi > > I agree that automatic code migration can solve this issue in large > parts. The Python folks have done this to mitigate the transition from > version 2 to version 3 [1]. > > On Thu, Aug 30, 2012 at 03:03:05PM +0200, Alexander Kjeldaas wrote: >> perl -ni -e 'print unless /import Prelude hiding \(catch\)/' $(git grep >> 'import Prelude hiding (catch)') > > I don't think regular expressions are powerful enough. This example > does not match on hiding multiple names, for instance. > > But writing proper 'HsModule -> HsModule' functions should be doable. > > And when each release comes with a bunch of such functions, packages > could be automatically migrated. > > Greetings > > Alex > > [1] http://docs.python.org/library/2to3.html > > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.10 (GNU/Linux) > > iEYEARECAAYFAlA/a/oACgkQevm6Dd/q44nJXQCffaxEJ/NZEftgoZ7viAWMuBO3 > +jkAnRTw+VCMQn1k9NibyKpkGMtwvrQw > =ds3M > -----END PGP SIGNATURE----- > > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe > _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe