Rony, this was added to NetRexx back in the 1990s.   ooRexx does it
differently, for whatever reason.   Whatever the case, it is always better
to 'spell out' the short-circuits in the code rather than rely on weird
notations, surely?   That way, people who read the code later can see
exactly what the programmer intended, rather than having to infer it from
some piece of code and notation that quite possibly was wrongly coded in the
first place.  Very few C coders understand the difference between '&' and
'&&', for example.  They randomly use both until the compiler complains.
 
In short: if the programmer wanted to 'save time' with a short-circuit then
it would be better if they learned to make their code simpler and more
readable.  If they wanted to do a second test only if the first succeeded,
they can always write that explicitly.  And anyone who later reads that code
will thank them for it.
 
That's why Rexx was designed to be (and hopefully still is): a language that
is understandable -- and, more importunately, usable -- to most people.
 
Mike


  _____  

From: Rony G. Flatscher [mailto:rony.flatsc...@wu.ac.at] 
Sent: 05 September 2020 19:30
To: oorexx-devel@lists.sourceforge.net
Subject: Re: [Oorexx-devel] Short cutting logical operators


On 04.09.2020 15:51, Mike Cowlishaw wrote:


I think you all know my opinion on weird notations in languages that are
only known and used by a few 'elite' programmers -- yet are all-too-easily
misunderstood by less-practiced (or simply less-able or infrequent)
programmers...

Yes, I think everyone concurs.

However, the question still remains, if one wishes to add the ability to
short-circuit to Rexx (like programmers coming from C/++/#, Java etc are
accustomed to and surprised that this concept is not available in Rexx), how
to do it.

Currently Rick added the comma as a delimiter indicating a short-circuit
using and concatenations. Then, if short-circuiting or concatenations should
be supported, how to allow them to be expressed in a "Rexxish" manner that
is not only known to a few 'elite' programmers, but anyone who comes from
C/++/# or Java?


---rony








  _____  

From: Erich Steinböck [mailto:erich.steinbo...@gmail.com] 
Sent: 04 September 2020 14:22
To: Open Object Rexx Developer Mailing List
Subject: Re: [Oorexx-devel] Short cutting logical operators


You're right.

I've often wondered whether a method call really *must* evaluate all its
arguments upfront.
What about lazy evaluation? Only evaluate an argument when it is actually
required, i. e. accessed for the first time?

On Fri, Sep 4, 2020 at 3:17 PM Rick McGuire <object.r...@gmail.com> wrote:


Hmmm, I found an awkward bit with this proposal. For the operators, these
are all transformed into method calls under the cover, so "a | b" gets
executed as "a~'|'(b)", where the object on the left hand side does the
evaluation of the condition. This allows any class to override the '|' and
'&'. With the overrides, the evaluation needs to be handled directly by the
operator code because there's no way to delay evaluation of a method
argument, and it would be very difficult to allow something like that to
exist. I'm not sure I'm comfortable with '*|' and '*&' be special cases as
operators.  

Rick

On Fri, Sep 4, 2020 at 9:03 AM Rick McGuire <object.r...@gmail.com> wrote:


There's been a bit of a discussion about the short-cutting conditional lists
implemented by IF, WHEN, et al. I find that construct very useful, but as
the discussion on the list has revealed, it has its limitations.  

It would actually be fairly trivial to implement AND and OR operators that
can do short-cut evaluation. Of course, this is not possible for XOR, which
always requires both values. The real questions are 1) should it be done and
2) what should the operator be. I've been tentatively using *& and *| in my
thinking about this, but there are certainly other possibilities. 

Rick


_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to