Smylers [mailto:[EMAIL PROTECTED]] wrote:
> And an alternative
> spelling for the assignment operator[*0] doesn't strike me as something
> Perl is really missing:
>
> $msg <~ 'Hello there';
> $msg = 'Hello there';
I still remember the first time I saw a computer program, before I had
learned anything about programming myself. A friend showed me his first
Fortran program, and it included the following line:
N = N + 1
I stared at that in puzzlement for a long minute, and then said "That sure
isn't true for any value of N that *I* know of!" Then he told me that "="
doesn't mean "equals" in Fortran (no, *that's* spelled "EQ" :-).
I've always been bothered by this misuse of mathematical notation, which is
used in an incredibly bewildering array of computer programming languages.
On the other hand, I've never been a fan of the ":=" spelling of assignment,
either. I always thought that "<-" was much better, except for the pitfall
that humans are likely to misread "a<-5" as a comparison.
One of the most... er, *interesting*, dodges I've seen in this area is the
one used by Squeak (a Smalltalk variant). Squeak spells assignment with an
underscore ("_"), but the Squeak system *draws* it as a left-pointing arrow.
Hey, I know: let's not bother with Unicode...let's just reassign a few ASCII
control characters for Perl's use! :-)
I, for one, could live with "<~" as the only assignment operator. But I only
suggest it tongue in cheek.
Speaking of Squeak, I notice that Buddha Buck just posted a
Smalltalk-translated-to-Perl implementation of the if-operator:
> class True is Bool is singleton {
>...
> our True true is builtin;
>etc.
which even includes the notion that the implementation of True and False is
immutable, so that the code generator has a ghost of a chance of knowing
what to do!
That was followed by Austin Hastings' post:
> log $user onto $system.
> log $message to $stderr.
> l2x = log 2 * log $x; # Don't check my math, please. :-)
> ...
> sub log($n) { ... }
> sub log _ onto($user; &_ ; $machine) { ... }
> sub log _ to($message; &_ ; $stream) { ... }
which is a recycling of Smalltalk's "inject:into:"-style operators. I have
to admit that I *like* the idea of being able to define those kinds[1] of
operators; they can really add to the clarity of the code. I just don't want
to have to write the parser!
[1] What *do* you call this style of operator -- intermingled-fix?
Looks like we've got some Smalltalk fans here. What say we start a new
mailing list for designing Perltalk? :-)
=thom
Riker: "They were just sucked into space."
Data: "Blown, sir."
Riker: "Sorry, Data."
Data: "Common mistake, sir."
(The Naked Now)