From: Peter da Silva
Subject: Re: Personal Preference: The Devil in Disguise
Date: 
Message-ID: <id.MKEC1.HD6@nmti.com>
In article <···············@netcom.com>,
Richard Underhill  <··@ccnext.ucsf.edu> wrote:
> Which brings me to the use of juxtaposition to denote the concatenation
> of strings.  For example, in the Unix C Shell one adds the string "~/bin"
> to the front of the contents of the variable "path" with 

>     set path = (~/bin $path)

This is not a string operation. The variable "path" in this example is an
array, not a string. I realise that you could as easily use the Bourne shell
for this example, or the construction of "~/bin" from the concatenation of
"~", "/", and "bin", so I'm not arguing with your conclusions *... you could
have used a better example, though.

> One more bad design choice in the C Shell.  In the C Shell a string constant
> represents itself.  It is better for a string constant to consist of a
> double quote followed by a string followed by a double quote.

Another better bad example: REXX, where a variable that's defined is treated
as its contents, but an undefined one has as value its name.

* I'm not saying I agree with them either.
-- 
Peter da Silva                                            `-_-'
Network Management Technology Incorporated                 'U`
1601 Industrial Blvd.     Sugar Land, TX  77478  USA
+1 713 274 5180                       "Hast Du heute schon Deinen Wolf umarmt?"

From: Dan Prener
Subject: Re: Personal Preference: The Devil in Disguise
Date: 
Message-ID: <PRENER.94Aug25024425@prener.watson.ibm.com>
In article <············@nmti.com> ·····@nmti.com (Peter da Silva) writes:

  [ ... ]

> > One more bad design choice in the C Shell.  In the C Shell a string constant
> > represents itself.  It is better for a string constant to consist of a
> > double quote followed by a string followed by a double quote.
> 
> Another better bad example: REXX, where a variable that's defined is treated
> as its contents, but an undefined one has as value its name.

You can turn that off in REXX, with

    signal on NOVALUE
--
                                   Dan Prener (······@watson.ibm.com)
From: Peter da Silva
Subject: Re: Personal Preference: The Devil in Disguise
Date: 
Message-ID: <id.J3GC1.N7H@nmti.com>
In article <····················@prener.watson.ibm.com>,
Dan Prener <······@watson.ibm.com> wrote:
> In article <············@nmti.com> ·····@nmti.com (Peter da Silva) writes:
> > Another better bad example: REXX, where a variable that's defined is treated
> > as its contents, but an undefined one has as value its name.

> You can turn that off in REXX, with

>     signal on NOVALUE

Yes, but in general REXX code doesn't seem to do that. In fact, I've seen code
that depended on this "feature".
-- 
Peter da Silva                                            `-_-'
Network Management Technology Incorporated                 'U`
1601 Industrial Blvd.     Sugar Land, TX  77478  USA
+1 713 274 5180                       "Hast Du heute schon Deinen Wolf umarmt?"
From: Dan Prener
Subject: Re: Personal Preference: The Devil in Disguise
Date: 
Message-ID: <PRENER.94Aug27010356@prener.watson.ibm.com>
In article <············@nmti.com> ·····@nmti.com (Peter da Silva) writes:

> In article <····················@prener.watson.ibm.com>,
> Dan Prener <······@watson.ibm.com> wrote:
> > In article <············@nmti.com> ·····@nmti.com (Peter da Silva) writes:
> > > Another better bad example: REXX, where a variable that's defined is treated
> > > as its contents, but an undefined one has as value its name.
> 
> > You can turn that off in REXX, with
> 
> >     signal on NOVALUE
> 
> Yes, but in general REXX code doesn't seem to do that. In fact, I've seen code
> that depended on this "feature".

Yes.  I believe that the motivation for that design was to make it easier
for a non-programmer to automate a sequence of commands, such as

   foo 1
   bar
   foo 2

which would otherwise have to be typed at a command line, by putting
them into a rexx script just as they would have been typed.
--
                                   Dan Prener (······@watson.ibm.com)