----- Original Message ----- 
From: "Paul J. Sanchez" <paul / argelfraster.org>
Newsgroups: comp.lang.ruby
To: "ruby-talk ML" <ruby-talk / ruby-lang.org>
Sent: Friday, December 06, 2002 4:33 PM
Subject: Re: elseif?


> I disagree with any proposal to remove "elsif" and replace it with
> "elseif" - that would hose way too much work and way too many current
> users.  I still like the idea of adding "elseif" as an alias, because
> it doesn't change the status quo yet makes the language a little more
> friendly to native English speakers.  I still believe what I said
> several months ago: I think it's a human factors issue for native
> speakers of English.  To me it's as jarring as reading through a
> usenet post and seeing repeated use of "there" instead of "their".  I
> can extract the meaning, and I could write like that too, but it takes
> effort to do so and is more prone to error on my part.  If Ruby were
> the only language I were using, I'd probably soon get used to it.
> However, in reality I switch back and forth between Ruby and Java,
> C/C++/Objective-C, and lately I've been playing with OCaml - all of
> them, along with English, keep the "e" at the end of "els", which
> makes Ruby's "elsif" a mild annoyance every time I bump into it.
> 
> I've programmed in well over a dozen languages in the last thirty
> years, I can just suck it up and use "elsif" as I've been doing for
> several months now.  It's not a make or break issue.  I also
> understand that this is not a democracy, and whatever Matz decides is
> the way it's going to be.  And that's a good thing, he's done a fine
> job.  But that needn't keep me from voicing my opinion, and hoping my
> plea falls on sympathetic ears.

Well, I too prefer "elseif" to "elsif" -- but I don't see
that it will be added, and it's a very minor point.

Actually, what I've always wished for is a multiway Boolean
branch that was *obviously* such, not merely a special case
of 'if'.

In grad school I created a toy language that had a 'test'
statement. (I'm not advocating this for Ruby, BTW, though
I personally wouldn't mind seeing it.)

It looked like a switch or case statement, but execution 
simply jumped to the first non-false expression:

  test
    expr1: stmt1
    expr2: stmt2
    ...
    exprN: stmtN
  end

So it was clearly a multiway branch like a case in Pascal
or switch in C, but it wasn't hacked out of stringing ifs
together.

<nostalgia>
Actually that little compiler was sort of the testbed for
several little ideas of mine. It had several varieties of
loop construct: loop, while, repeat, until, maybe one I've
forgotten. It had two varieties of Boolean operators -- one
that short-circuited and one that did not. Contrary to the
popular wisdom it didn't even have a goto ("Come on, every 
language HAS one.").

Contrariwise, it wasn't OOP, because in 1984 I had never done 
OOP. And it didn't do exceptions because I had never heard 
of those.

It did have a VM, though... the language (Pandora) was compiled
to assembly language (Pangloss) and run on the VM (Panacea).
</nostalgia>

Hal