Meta-point: backward compatibility

Chris Smith cdsmith at
Wed Apr 23 17:10:50 EDT 2008

On Wed, 23 Apr 2008 22:52:18 +0200, Niklas Broberg wrote:
>> An interesting question. What is the goal of Haskell'? Is it to, like
>>  Python 3000, fix warts in the language in an (somewhat) incompatible
>>  way or is it to just standardize current practice? I think we need
>>  both, I just don't know which of the two Haskell' is.
> I would hope it is both. Some changes simply cannot become current
> practice since they would not be compatible with existing code, and the
> only place that such changes *could* be made is in a new language
> version.  Like you say, fail in the Monad class is one such issue that
> would not be backwards compatible, and couldn't become a current
> practice without some help. Chicken or egg first?

I don't think I agree that fail in the Monad typeclass is a good example 
here, or necessarily that there is a good example.

We should remember that there is a cohesive community of Haskell 
programmers; not a bunch of unrelated individuals who never talk to each 
other.  It's entirely possible to spend some time recommending against 
using fail (as many people have been doing), and then eventually remove 
it.  It doesn't need to break very much.  This is working in our favor, 
so we may as well use it.  IMO, this argues strongly in favor of making 
any backward compatible changes incrementally, instead of adopting a 
"Python 3000" model of postponing them and then breaking everything at 

(This is ignoring technical issues in this particular example; like what 
happens when a pattern match fails if there is no fail in Monad.  It's 
entirely possible that discouraging use is the right answer in this case, 
and that removal need not happen.  That's beside the point.)


More information about the Haskell-prime mailing list