1. Re: Digest for EUforum at topica.com, issue 1880

Well, I thought I addressed this sore point of '=' polysemy. Here is
what I have in mind:
	When a '=' is encountered, the character just preceding it is checked.
May come from an idenifier ( [A-Za-z0-9_ ] ), is an arithmetic operator
or is ')','>','<' or '!'. No confusion arises now in Euphoria with these
settings. 
	My suggestion is: add ':' to this list and set ":=" as a synonym for
regular assignment. Since ordinary '=' has a clear meaning in conditions
(while, if, elsif,...), don't disturb it, and let ":=" mean "=" when 
there may be an ambiguity.
	Since there must be one relational oprerator only in a condition,
"a=b=c" would cause a syntax error. Both "a:=b=c" and "a=b:=c" would be
unambiguously recognized.
	Since a statement cannot contain two level-0 assignments, a standalone
"a:=b=c" would raise a syntax errror, just as "a=b=c" would.
	So, introducing ":=" as simultaneous assignment operator in a while, if
or elsif statement would not break any existing code (since, right now,
there is no legal ":=" compound)  and would come closer to programmer's
inner vision of the program.
	Allowing "a:=b" as standalone statement would not enhance clarity,
since it would uselessly stand for "a=b". So it probably should be
outlawed.

	Or did I miss anything?

	CChris

> Date: Tue, 17 Sep 2002 11:59:37 +0000
> From: Andy Serpa <renegade at earthling.net>
> Subject: RE: Andy and Pete, about :=
> 
> Christian.CUVIER at agriculture.gouv.fr wrote:
> >
> > >
> >       If a function has intentional side effects, so be it, and the
> > programmer must realize it is executed each time it appears in code,
> > whether to explicitly use the result or not.
> 
> The point about that is we can't have the optimizer decide to compute a
> function sometimes and not others if I'm counting on the side-effect --
> it must execute the exact number of times it actually appears.  If it an
> index lookup or something and it can optimize that, then fine.
> 
> > hard to find bugs.
> >       Since ':' is not a legal character in identifiers, and a namespace
> >       must
> > be followed by an identifier, inside which '=' is not legal either,...
> > where would be the trouble incorporating this in existing code?
> >
> >
> Well, if you're not to break any existing code, that means that your new
> way of making an assignment would be added without changing the way '='
> currently works.  As it stands, '=' can be used in expressions for
> comparisons (in while statements, and on the right hand side of
> assignments, i.e. expressions), and no assignments can occur in an
> expression (like in a while statement -- for loops have a special
> temporary assignment).  So the meaning of '=' is determined by its
> context.  You propose that ':=' be allowed for assignments in a while
> statement (which we can't do at all now).  Does that also mean that we
> can use it just for regular assignments (a := b) by itself on the line
> and continue to use '=' that way as well?  Or its ONLY allowed in a
> loop?
> 
> It seems if you're gonna do that, ':=' should be used for ALL
> assignments, and '=' used for ALL comparisons.  But it's "too late" for
> that in Euphoria, I'm afraid.  I'm not dead set against it, but it
> doesn't exactly bring clarity...
> 
>

new topic     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu