[Haskell-cafe] Re: [Haskell-beginners] map question

Will Ness will_n48 at yahoo.com
Mon Oct 19 18:34:08 EDT 2009


wren ng thornton <wren <at> freegeek.org> writes:

> 
> Will Ness wrote:
> 
> > (`foldl`2) works.
> > 
> > (`-`2) should too.
> 
> The `` syntax is for converting lexical identifiers into infix 
> operators. Symbolic identifiers are already infix, which is why `` 


So it would be a no-op then. Why make it illegal? Just because it makes writing 
the scanner easier is no answer.

> doesn't work for them. If we introduced this then those striving for 
> consistency would be right in requesting that this pattern be allowed 
> for all symbolic operators. I for one am opposed to introducing 
> superfluous syntax for duplicating the current ability to write things 
> in the same ways.


This syntax already exists. The '`' symbol is non-collating already, so using 
it for symbol chars doesn't change anything (it's not that it can be a part of 
some name, right?). To turn an infix op into an infix op is an id operation, 
made illegal artificially at the scan phase after a successful lex (or 
whatever).

Finally enabling the missing functionality which is a common stumbling block 
for every beginner is hardly "duplicating".

> Attack the underlying problem, don't introduce hacks to cover up broken 
> hacks. This isn't C++.


The underlying problem is a broken scanner where it can't distinguish between a 
binary op and a number read syntax. Op names are collated symbol chars, and one 
of the symbols, -, is also a valid number prefix. So, allow for a clues from 
programmer to detach it from the number: backticks separate it from the 
following numeric chars, preventing it from "sticking" to them. And by itself, 
it forms an op, a binary one.

Not a hack, a solution. A consistent one. Look:

  (`foldl` 0)
  (`-` 2)

Don't they look exactly the same?

Why wouldn't it be made legal? Show me one inconsistency it introduces.




More information about the Haskell-Cafe mailing list