[Haskell-cafe] Re: GHC Feature or Bug: f x = (`head` x, ())

Christian Maeder Christian.Maeder at dfki.de
Wed Aug 6 08:40:46 EDT 2008


Jeremy Shaw wrote:
> Hello,
> 
> GHC is happy to compile this code:
> 
>> f x = (`head` x, ())

Also
   (+ x, ())
   ((), + x)
   ((), + x, ())
are accepted by GHC

This looks like a bug to me, because
   (+, ())
   ((), x +)
are rejected.

Sections need to be in parens.

If one allows sections as tuple components, then the latter should may 
be made legal, too.

Cheers Christian

> 
> but Hugs does not like it, and Section 3.5 of the Haskell Report does
> not give any obvious indications that it is valid. Numerous people
> have suggested that some additional parens are required:
> 
>> f x = ((`head` x), ())
> 
> Is this GHC behavior intentional? If not, is it perhaps a happy
> accident? Or is it ambigious in some way with out the additional
> parenthesis ?
> 
> I am curious because trhsx (the preprocessor for HSP/HSX) currently
> does not accept this construct. If it is a bug in GHC (that will
> eventually be fixed), then we can leave trhsx alone. If it is a
> feature, then a precise definition of the adjusted syntax would be
> helpful. (Or, if this construct is valid H98, an explaination of how
> to read the report correctly).
> 
> Thanks!
> j.


More information about the Haskell-Cafe mailing list