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?"
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?"
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)