Haskell 2010 libraries

wren ng thornton wren at community.haskell.org
Sun May 9 01:21:38 EDT 2010


Brandon S. Allbery KF8NH wrote:
> On May 4, 2010, at 05:09 , Duncan Coutts wrote:
>> On Fri, 2010-04-30 at 10:42 +0100, Simon Marlow wrote:
>>> Bear in mind these goals: we want to
>>>
>>>   a. support writing code that is Haskell 2010 only: it only uses
>>>      Haskell 2010 language features and modules.
>>>
>>>   b. not break existing code as far as possible
> 
> I'm going to dissent here:  current code assumes extensions, not a 
> standard.  I think it's not outside the pale to have code that wishes to 
> conform to Haskell2010 be modified to do so, and otherwise the code 
> continues to be "extended nonstandard Haskell" if it is not already 
> Haskell98-conformant.  After all, Haskell2010 doesn't quite include 
> *all* of the extensions that are in common use.
> 
> So, I'm going to go out on a limb here and suggest that Haskell 2010 
> code should specify
> 
>  > {-# LANGUAGE Haskell2010 #-}
> 
> to distinguish from Haskell '98 code (no LANGUAGE pragmas) and extension 
> code (other LANGUAGE pragmas).  Users who wish to combine the above with 
> nonstandard extensions can expect to do extra work.  Existing code 
> continues to work because it doesn't explicitly limit itself to 
> Haskell2010.


I haven't had time to fully consider how the libraries should be 
handled, but I'm all for this suggestion. Especially once the Haskell 
report becomes a rolling target with yearly updates, explicitly 
declaring which version of the standard the designer had in mind should 
help to fend off bit-rot. In the short term the report changes will be 
minor enough as not to cause issues, but I'm thinking more about five 
and ten years out when people come back to look at classic projects 
(e.g., the future equivalents of THIH, SOE,...)

Even aside from the LANGUAGE pragma, I agree that there is a difference 
between current code written in various flavors of GHC 20XX, vs code 
that intends to be H2010 conformant. We shouldn't break GHC20XX code 
needlessly, but I don't think we should try to enshrine it as 
proto-H2010 either. H2010 code should state that it is H2010 code. And 
code that wants to be considered H2010 plus extensions (rather than H98 
plus extensions) should say so too.

-- 
Live well,
~wren


More information about the Libraries mailing list