[J3] Syntax of conditional expressions
Gary Klimowicz
gak at pobox.com
Tue Jun 29 19:08:30 UTC 2021
On Jun 29, 2021, at 10:21, Robert Corbett via J3 <j3 at mailman.j3-fortran.org> wrote:
> The choice between the verbose and concise
> forms of conditional expressions was very
> close. I would not object to including both
> forms in the language. There is a precedent.
> Algol 68 had both verbose and concise forms
> of conditional expressions.
I realize we're not competing in "expression golf" here,
but let's remember how concise Algol-68 was in both forms.
The verbose form in Algol-68 was much more concise to begin with:
if a then b elif c then d else e fi # 35 chars #
Compare to (21-157r1 line 28)
if (a) then (b) elseif (c) then (d) else (e) endif ! 50 chars, 43% more
That's just with 5 characters of data in the expression.
If you're stuck in fixed format, that's 75% of the available characters,
right?
So, I'm not a fan of the verbose form; I think it's just too verbose.
The concise forms fair much better.
In Algol-68, the above can also be expressed as
(a | b |: c | d | e) # 21 chars; with 8 blanks for readability #
Fortran concise 1 (21-157r1 line 33)
(? a ? b :? c ? d : e ?) ! 24; not bad
! But then we live in Question Mark City!
Fortran concise 2 (21-157r1 line 38)
( a -> b : c -> d : e ) ! 23 chars
As an aside, Algol 68 also had the notion of a sort of void computation,
"skip", that seems to mean something like "I know you want a value here,
so let's pretend I gave you one of the appropriate type". I'm not sure
of the semantics in an expression, but it's mentioned in the book I have
for handling the "else" with no value.
So, my vote would be: one form, concise. I'll admit I'm not a fan of all
the question marks, but I lost track of the concise proposals (had to
make a phone call at a bad time).
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.j3-fortran.org/pipermail/j3/attachments/20210629/9c747780/attachment-0003.htm>
More information about the J3
mailing list