Haskell 2010 draft report

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
12 messages Options
Reply | Threaded
Open this post in threaded view
|

Haskell 2010 draft report

Simon Marlow-7
I've completed most of the edits to the Haskell 98 report for Haskell
2010, modulo the changes to the libraries that we still have to resolve.

I cleaned up various other things I discovered along the way, and tidied
up the typesetting.  I've also made a much nicer HTML rendering of the
report using TeX4ht, which means we can ditch the old 1500 lines of
hacked up Haskell code which used to do the HTML conversion before.

You can see the draft report here, in PDF and online HTML respectively:

http://www.haskell.org/~simonmar/haskell-2010-draft-report.pdf
http://www.haskell.org/~simonmar/haskell-2010-draft-report/haskell.html

In the PDF you'll notice that the bits that changed in Haskell 2010
relative to Haskell 98 are purple (except for the FFI chapter).
Unfortunately I haven't yet managed to make this work in the HTML
version, but it ought to be possible.

I'd appreciate a few more eyes over this, in particular look out for
messed up typesetting as there could still be a few bugs lurking.

The source repo (darcs) is here:

http://darcs.haskell.org/haskell2010-report

Cheers,
        Simon
_______________________________________________
Haskell-prime mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/haskell-prime
Reply | Threaded
Open this post in threaded view
|

Re: Haskell 2010 draft report

Malcolm Wallace
> I'd appreciate a few more eyes over this, in particular look out for  
> messed up typesetting as there could still be a few bugs lurking.

     "Modified versions of this Report may also be copied and  
distributed for any purpose, provided that the modified version is  
clearly presented as such, and that it does not claim to be a  
definition of the language Haskell 98."

Well at least you are complying. :-)

In the Preface, my affiliation should be "University of York", the one  
in England, not "York University", the one in Canada.

Also in the Preface, I would expect a citation for the published  
version of the Haskell'98 book, together with its appearance in the  
Bibliography.

I did not immediately spot any other obvious flaws.

Regards,
     Malcolm

_______________________________________________
Haskell-prime mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/haskell-prime
Reply | Threaded
Open this post in threaded view
|

Re: Haskell 2010 draft report

Sean Leather
In reply to this post by Simon Marlow-7
 
I'd appreciate a few more eyes over this, in particular look out for messed up typesetting as there could still be a few bugs lurking.

In the HTML version, there are a few cases where section numbers are missing from the subsection headers in the TOC. I see at least 11 and 22.

In the PDF, is there any possibility of formatting the entries in the TOC as links to the text?

Regards,
Sean

_______________________________________________
Haskell-prime mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/haskell-prime
Reply | Threaded
Open this post in threaded view
|

Re: Haskell 2010 draft report

Ian Lynagh
In reply to this post by Simon Marlow-7
On Fri, Apr 30, 2010 at 05:05:17PM +0100, Simon Marlow wrote:
>
> I'd appreciate a few more eyes over this, in particular look out for  
> messed up typesetting as there could still be a few bugs lurking.

In the PDF:

p10: Typo "Februrary"
p10: The new (purple) bullet points do not end in full stops, while the
     old (black) ones do

p11: "Audrey Tang" is not alphabetically placed
p11: Missing linebreak after "John Goerzen"
p11: Missing vowel in "Andres Lh"
p11: Alphabetical order breaks down for surnames beginning 'M'/'N'

p12: Aerts/Aberg out of order
p12: Blott/Blenko out of order
p12: Wolfram Kahl is listed twice
p12: Ralf Hinze is in both the "committee" and the "other" list
p12: Simon Thompson is in both the "committee" and the "other" list


Thanks
Ian

_______________________________________________
Haskell-prime mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/haskell-prime
Reply | Threaded
Open this post in threaded view
|

Re: Haskell 2010 draft report

Ian Lynagh
In reply to this post by Simon Marlow-7
On Fri, Apr 30, 2010 at 05:05:17PM +0100, Simon Marlow wrote:

> I've completed most of the edits to the Haskell 98 report for Haskell  
> 2010, modulo the changes to the libraries that we still have to resolve.
>
> I cleaned up various other things I discovered along the way, and tidied  
> up the typesetting.  I've also made a much nicer HTML rendering of the  
> report using TeX4ht, which means we can ditch the old 1500 lines of  
> hacked up Haskell code which used to do the HTML conversion before.
>
> You can see the draft report here, in PDF and online HTML respectively:
>
> http://www.haskell.org/~simonmar/haskell-2010-draft-report.pdf
> http://www.haskell.org/~simonmar/haskell-2010-draft-report/haskell.html
>
> In the PDF you'll notice that the bits that changed in Haskell 2010  
> relative to Haskell 98 are purple (except for the FFI chapter).  
> Unfortunately I haven't yet managed to make this work in the HTML  
> version, but it ought to be possible.
>
> I'd appreciate a few more eyes over this, in particular look out for  
> messed up typesetting as there could still be a few bugs lurking.

In the PDF:

p37: "guard  -->  pat <- infixexp"
     Is that really meant to be infixexp, not exp? GHC accepts:
         foo
          | True <- True :: Bool
              = 'a'

p37: Hmm, likewise "guard  -->  infixexp". GHC accepts
         foo
          | True :: Bool
              = 'a'
     but hugs doesn't (unexpected `::'). So I guess these are both
     just GHC bugs, although I wonder why the report isn't more liberal.

p42: The negative literal alternative in pat is redundant

p47: I'm not sure I see the reason for this change. It seems to just
     make it more complicated. If the change is made, should say y is a
     new variable.
     I don't know if the colouring is important, but there's a black "y"
     that should be purple, and two purple "_ ->" that should be black,

p47: Case (h) is alone in ending in a full stop

p48: Case s, again I don't see the point of the y binding


Thanks
Ian

_______________________________________________
Haskell-prime mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/haskell-prime
Reply | Threaded
Open this post in threaded view
|

Re: Haskell 2010 draft report

Ian Lynagh
In reply to this post by Simon Marlow-7
On Fri, Apr 30, 2010 at 05:05:17PM +0100, Simon Marlow wrote:
>
> I'd appreciate a few more eyes over this, in particular look out for  
> messed up typesetting as there could still be a few bugs lurking.

In the PDF:

p129-137: A "program" can only contain a "modid" as part of a
          "qvarid", ..., "qconsym", but e.g. a "module" needs a
          bare "modid". May be best to defer fixing this, and
          tidy up the syntax definition in H2011.

p152: There's a huge amount of whitespace between "dclass" and "inst"

p153: Same "guard  -->  pat <- infixexp" comment as on p37 (GHC bug?).
p153: Same "guard  -->  infixexp" comment as on p37 (GHC bug?).

p153: RHS of "gdrhs" production should be purple (as on p66)

p154: As on p42, the negative literal alternative in pat is redundant

p156: The argument to resolve doesn't have to strictly alternate, e.g.
      "id $ - three".

p156: The program needs an "import Control.Monad"
p156: The program should derive Show for everything

p157: In one case (in the penultimate paragraph) "-" is quoted and short,
      while earlier uses are bare and long.

p159: Is this legal?:
          {-# LANGUAGE EmptyDataDecls #-}
          data Foo
              deriving ()
      GHC accepts it, but hugs says (unexpected keyword "deriving")


Thanks
Ian

_______________________________________________
Haskell-prime mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/haskell-prime
Reply | Threaded
Open this post in threaded view
|

Re: Haskell 2010 draft report

Ian Lynagh
In reply to this post by Simon Marlow-7
On Fri, Apr 30, 2010 at 05:05:17PM +0100, Simon Marlow wrote:
>
> I'd appreciate a few more eyes over this, in particular look out for  
> messed up typesetting as there could still be a few bugs lurking.

In the PDF:

p166: Does anything support these?:
          DoAndIfThenElse, HierarchicalModules, FixityResolution,
          LineCommentSyntax, LanguagePragma
      Should "RelaxedDependencyAnalysis" be "RelaxedPolyRec"?
      "EmptyDataDeclarations" should be "EmptyDataDecls".


Thanks
Ian

_______________________________________________
Haskell-prime mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/haskell-prime
Reply | Threaded
Open this post in threaded view
|

Re: Haskell 2010 draft report

Simon Marlow-7
In reply to this post by Sean Leather
On 30/04/2010 17:58, Sean Leather wrote:
>     I'd appreciate a few more eyes over this, in particular look out for
>     messed up typesetting as there could still be a few bugs lurking.
>
>
> In the HTML version, there are a few cases where section numbers are
> missing from the subsection headers in the TOC. I see at least 11 and 22.

I wish I knew why this happened.  It always seems to be chapters 11 and 22.

> In the PDF, is there any possibility of formatting the entries in the
> TOC as links to the text?

Good idea - done.

Cheers,
        Simon
_______________________________________________
Haskell-prime mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/haskell-prime
Reply | Threaded
Open this post in threaded view
|

Re: Haskell 2010 draft report

Simon Marlow-7
In reply to this post by Ian Lynagh
On 01/05/2010 13:18, Ian Lynagh wrote:

> On Fri, Apr 30, 2010 at 05:05:17PM +0100, Simon Marlow wrote:
>> I've completed most of the edits to the Haskell 98 report for Haskell
>> 2010, modulo the changes to the libraries that we still have to resolve.
>>
>> I cleaned up various other things I discovered along the way, and tidied
>> up the typesetting.  I've also made a much nicer HTML rendering of the
>> report using TeX4ht, which means we can ditch the old 1500 lines of
>> hacked up Haskell code which used to do the HTML conversion before.
>>
>> You can see the draft report here, in PDF and online HTML respectively:
>>
>> http://www.haskell.org/~simonmar/haskell-2010-draft-report.pdf
>> http://www.haskell.org/~simonmar/haskell-2010-draft-report/haskell.html
>>
>> In the PDF you'll notice that the bits that changed in Haskell 2010
>> relative to Haskell 98 are purple (except for the FFI chapter).
>> Unfortunately I haven't yet managed to make this work in the HTML
>> version, but it ought to be possible.
>>
>> I'd appreciate a few more eyes over this, in particular look out for
>> messed up typesetting as there could still be a few bugs lurking.
>
> In the PDF:
>
> p37: "guard  -->   pat<- infixexp"
>       Is that really meant to be infixexp, not exp? GHC accepts:
>           foo
>            | True<- True :: Bool
>                = 'a'
>
> p37: Hmm, likewise "guard  -->   infixexp". GHC accepts
>           foo
>            | True :: Bool
>                = 'a'
>       but hugs doesn't (unexpected `::'). So I guess these are both
>       just GHC bugs, although I wonder why the report isn't more liberal.

See the bottom of 3.13:

"
A note about parsing. The expression
   case x of { (a,_) | let b = not a in b :: Bool -> a }

is tricky to parse correctly. It has a single unambiguous parse, namely
   case x of { (a,_) | (let b = not a in b :: Bool) -> a }

However, the phrase Bool -> a is syntactically valid as a type, and
parsers with limited lookahead may incorrectly commit to this choice,
and hence reject the program. Programmers are advised, therefore, to
avoid guards that end with a type signature — indeed that is why a guard
contains an infixexp not an exp.
"


In Haskell 98 we had

   gd -> | exp^0

where exp^0 is now called infixexp, so I kept things as they were.

Arguably using infixexp here is only a partial fix for the parsing
problem described above, and so it might be better not to try to fix the
problem at all.  Either way though, GHC will be wrong.

> p42: The negative literal alternative in pat is redundant

well spotted, thanks.

> p47: I'm not sure I see the reason for this change. It seems to just
>       make it more complicated. If the change is made, should say y is a
>       new variable.
>       I don't know if the colouring is important, but there's a black "y"
>       that should be purple, and two purple "_ ->" that should be black,

Agreed, I've reverted that.

> p47: Case (h) is alone in ending in a full stop
>
> p48: Case s, again I don't see the point of the y binding

Fixed.  Thanks!

Simon
_______________________________________________
Haskell-prime mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/haskell-prime
Reply | Threaded
Open this post in threaded view
|

Re: Haskell 2010 draft report

Simon Marlow-7
In reply to this post by Ian Lynagh
On 02/05/2010 13:57, Ian Lynagh wrote:

> On Fri, Apr 30, 2010 at 05:05:17PM +0100, Simon Marlow wrote:
>>
>> I'd appreciate a few more eyes over this, in particular look out for
>> messed up typesetting as there could still be a few bugs lurking.
>
> In the PDF:
>
> p129-137: A "program" can only contain a "modid" as part of a
>            "qvarid", ..., "qconsym", but e.g. a "module" needs a
>            bare "modid". May be best to defer fixing this, and
>            tidy up the syntax definition in H2011.
>
> p152: There's a huge amount of whitespace between "dclass" and "inst"
>
> p153: Same "guard  -->   pat<- infixexp" comment as on p37 (GHC bug?).
> p153: Same "guard  -->   infixexp" comment as on p37 (GHC bug?).
>
> p153: RHS of "gdrhs" production should be purple (as on p66)
>
> p154: As on p42, the negative literal alternative in pat is redundant
>
> p156: The argument to resolve doesn't have to strictly alternate, e.g.
>        "id $ - three".
>
> p156: The program needs an "import Control.Monad"
> p156: The program should derive Show for everything
>
> p157: In one case (in the penultimate paragraph) "-" is quoted and short,
>        while earlier uses are bare and long.

All fixed, thanks.

> p159: Is this legal?:
>            {-# LANGUAGE EmptyDataDecls #-}
>            data Foo
>                deriving ()
>        GHC accepts it, but hugs says (unexpected keyword "deriving")

Yes, it's legal according to the grammar.

Cheers,
        Simon
_______________________________________________
Haskell-prime mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/haskell-prime
Reply | Threaded
Open this post in threaded view
|

Re: Haskell 2010 draft report

Ben-145
In reply to this post by Simon Marlow-7
a quick question --  i'm assuming that maintaining two versions is
out?  this is what they do with python 2.7 and 3.1 (and a variety of
other systems, like BSD.)  it seems like making one version of the
system work against two specifications is hard; of course, maintaining
two separate systems is also hard.

ben
_______________________________________________
Haskell-prime mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/haskell-prime
Reply | Threaded
Open this post in threaded view
|

Re: Haskell 2010 draft report

Simon Marlow-7
On 04/05/2010 17:28, Ben wrote:
> a quick question --  i'm assuming that maintaining two versions is
> out?  this is what they do with python 2.7 and 3.1 (and a variety of
> other systems, like BSD.)  it seems like making one version of the
> system work against two specifications is hard; of course, maintaining
> two separate systems is also hard.

The Haskell 98 report is basically static, there have been very few
changes to it in recent years.  I don't think we need to maintain it -
it's done.

I'd be happy to continue maintaining the Haskell 2010 report for a while
though, for backporting thigs like typos and clarifications.

Cheers,
        Simon
_______________________________________________
Haskell-prime mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/haskell-prime