Burning bridges

Nicolas Trangez nicolas at incubaid.com
Fri May 24 09:53:56 CEST 2013


On Fri, 2013-05-24 at 09:30 +0200, Petr Pudlák wrote:
> Dne 24.5.2013 04:57, Bardur Arantsson napsal(a):
> > I'm a bit surprised I haven't seen anyone mention it, but the Go
> > community have a tool which can automate a lot of the tedium of API
> > transitions:
> >
> >     http://blog.golang.org/2011/04/introducing-gofix.html
> >
> > Maybe I'm missing something, but surely this kind of tool (a "hlint on
> > steriods", I guess) could be written for many of the breaking changes
> > that have been suggested in recent days on this list.
> >
> > Gofix specifically doesn't try to fix absolutely *everything*, but it
> > fixes all the trivial stuff which is extremely annoying, but
> > automatable, such as import lists, module/function renames, etc. (For a
> > recent example, see "catch".)
> >
> > Heck, one could even imagine building in a "--future" mode into such a
> > program to handle changes "one version ahead" during the deprecation
> > cycle (which I assume we're not getting rid of). It could, for example,
> > start issuing appropriate warnings for the Applicative => Monad
> > transition. (Which would mean that we wouldn't need ad-hoc modifications
> > to GHC to support such transitions.)
> >
> > AFAICT having such a tool in the Go ecosystem has been a huge boon, at
> > least while the language and APIs were developing and in the transition
> > from Go 1.0 to 1.1.
> >
> >
> 
> I'd also support the suggestion of making several changes at once, that 
> solve many recurring problems. For me it's easier to make one big 
> upgrade to my code once, than to make a small upgrade every now and then 
> if the language changes in small steps.
> 
> The idea of making an automated tool is really great, I was just 
> thinking about something similar. Some changes would be really trivial, 
> like adding "import Interlude". Some would be slightly more complex, 
> like refactoring Monad instances into Applicative+Monad, but I believe 
> it'd be very well possible.

This has been coined on haskell-cafe some time ago as well, see [1] and
[2].

Nicolas

[1] http://www.haskell.org/pipermail/haskell-cafe/2013-May/108086.html
[2] http://www.haskell.org/pipermail/haskell-cafe/2013-May/108087.html




More information about the Libraries mailing list