[mercury-users] Pred defns
pets at students.cs.mu.OZ.AU
Fri Apr 3 18:06:51 AEST 1998
On Fri, 3 Apr 1998, Lee Naish wrote:
> >> map__set(map#, Key1, Value1, map#:=),
> >But since map# and := sensible separate things, it would be tempting to
> >leave a space between the # and the :=, leading to nothing good.
> This argument can be leveled at pretty much every operator with more
> than one character. After a few syntax error messages I think most
> programmers would get the hang of it.
Not really. The point is that # and := are both valid operators that
naturally appear in succession. Having a separate, different, #:= operator
seems like asking for trouble.
> >when you do an assignment, you'd /need/ to leave a space between the # and
> >the := or nothing good would come of it. I find this more worrying.
> I'm not sure its good to have a special := construct as well as a
> general update accumulator construct - the general purpose one alone is
> probably better.
Oh, great, then you have to write
x#:= = x# + 1.
Doesn't look too nice to me.
> I think a := construct will confuse novices a great
> deal - they will try to use it to assign to variables (perhaps I'm being
> unduely influenced by my current teaching load :-).
Not until the get over trying to use = as an assignment:
X = X + 1,
Anyway, the'll get an error message if they try to write
X := X + 1
because the thing to the left of := isn't a thread variable.
The reason I like := and $, and only added $:= as a somewhat grudging
afterthought is that they're sufficient by themselves, and have a very
simple and intuitive semantics. But $:= is very convenient, so I threw it
in, too. It's still a pretty simple feature. Adding the ..., $foo, $, ...
idiom makes it a bit more complicated and confusing to use than I'd like, a
bit closer to the point where the confusion potential outweighs the value,
but still probably worthwhile.
-Peter Schachte | IBM is not a necessary evil. IBM is not
mailto:pets at cs.mu.OZ.AU | necessary.
http://www.cs.mu.oz.au/~pets/ | -- Ted Nelson
PGP key available on request |
More information about the users