[EMAIL PROTECTED] wrote:
> 
> Hi Joel,
> 
> I see that (so far) you chose to ignore my invitation in a previous
> message, to comment on whether the logic of my argument is acceptable
> to you. My question was addressed personally to you and not
> anonymously to the list.
> 
> I conclude that since you have otherwise demonstrated a friendly and
> polite style, and wisely separated disrespectful remarks from any
> immediate dialog, you intend to reply to my question, and that you
> are simply too busy to do that just now. I hope you will find the
> time to read this email.
> 

That is a correct conclusion.  Between work, family, and the season,
the length of my to-do series is incrementing MUCH more rapidly than
the current position ;-)

Given my current time constraints, I probably won't be responding on
this thread as quickly as I'd like over the next few days.  However,
I believe the model that these discussions have stimulated (see my
post X-SELMA: 60339) is now capable both of explaining and predicting
a wide range of behavior I've seen discussed on this list recently.
I'm giving priority to writing down that model (off line for posting
ASAP), as I believe that doing so will accelerate the net pace of the
discussion.

I certainly apologize if any of the above circumstances/decisions give
the impression of lack of interest/attention (I can read MUCH faster
than I can produce coherent prose ;-)

However...

To try to respond briefly to some of the issues you've raised (I'm
rushing, so I hope it will be recognizable WHICH ones...)

If two "things" are the SAME, then changing one BY DEFINITION changes
the other.  If my SS# is 111-11-1111 and my TN driver's licence # is
22233444, then the phrases "the employee with SS# 111-11-1111" and
"the driver with TN license # 22233444" refer to the SAME person.
If my employer gives a $100 raise to "the employee with SS#
111-11-1111", then the TN driver with license 22233444 has $100 more
in his paycheck.  OTOH, if my wife's SS# is 222-22-2222, the fact
that I got a raise doesn't make her paycheck larger, because we are
NOT the SAME person.  We can show that two things are not the same
if we can show that changing one DOES NOT NECESSARILY change the
other.

However, two "things" that are not the same can still BOTH refer to
another thing which IS the same.  If someone gives a wedding present
to my son who is engaged, then they have also given a present to my
wife's son who is engaged.  She and I have different relationships
with him (she and I are not the same person), but HE is the SAME
person.  The act of giving a present to my son is also the act of
giving a present to my wife's son, but it's because we each are
RELATED to the same person, not becuase my wife and I ARE the same
person.

Consider the following console transcript.  Numbers in the left hand
margin have been added by me for ease of reference.  Although I break
in with comments, the numbered input/output pairs were copied from a
single session.  (I do NOT use Microsoft personnel to prepare my
presentations! ;-)

1    >> x: [1 2 3 [9 8 7] 4 5 6]
     == [1 2 3 [9 8 7] 4 5 6]
2    >> b: fourth x
     == [9 8 7]
3    >> a: next b
     == [8 7]

The fourth element of the series referred to by the word (variable) 'x
is itself a series.  It is anonymous, in the sense that there is no
stand-alone variable that refers to it.  I'll refer to it below as
"x/4", but I believe that is an expression which evaluates to a
reference, not a variable that contains a stored reference.  (The
reason for this hair-splitting will become obvious -- I hope!)  The
words 'b and 'a are each initialized to series values.  The values
referred to by 'b and 'a, as well as the value resulting from x/4,
are all series values.  Each of them is distinct (having its own
independent position) but they all refer to the same underlying
data sequence.

4    >> insert a "YOW!"
     == [8 7]
5    >> x
     == [1 2 3 [9 "YOW!" 8 7] 4 5 6]
6    >> b
     == [9 "YOW!" 8 7]

These three lines demonstrate that 'a 'b and x/4 refer to series
values that all refer to the same sequence, because a modification
to that sequence (through the series referred to by 'a) affects all
of them.

7    >> next b
     == ["YOW!" 8 7]
8    >> next next b
     == [8 7]
9    >> b
     == [9 "YOW!" 8 7]

These three lines demonstrate that the 'next operator takes a series
as an argument and returns a NEW series value.  That new series
refers to the same sequence as the original, but at a position one
further than the original.  What the interpreter displays in response
to lines 7 and 8 is a representation of the new series resulting from
the evaluations of those expressions.  Line 9 shows that 'next DOES
NOT modify its argument series.  I can request the interpreter to
evaluate the expression {next b} all day long, yet the series referred
to by 'b will remain unchanged after all that.

10   >> b: next next b
     == [8 7]

This is further demonstration of the same point, in a round-about way.
I believe that evaluating {next b} is analogous to evaluating {n + 1}
in that each yields a NEW value WITHOUT modifying the variable
('b or 'n, respectively) that occurs in the expression.  The only way
to MODIFY the variable is to set it to a new value.  Therefore, the
statement {b: next next b} is exactly analogous to {n: n + 1 + 1} in
that the right-hand side evaluates an operator (twice!) to obtain a
new value, and then stores that (a reference to) that value into a
variable.  The fact that the word used in the expression is the same
as the word whose value is set to the result is purely coincicental!

11   >> x
     == [1 2 3 [9 "YOW!" 8 7] 4 5 6]

This re-emphasizes that the series found in the fourth position of 'x
is a different series (although referring to the same underlying
sequence) than that referred to by 'b.  Although 'b was originally
set to a series value (sequence reference and position) that was a
copy of the value at x/4, we subsequently fiddled around with 'b
without thereby affecting the position of the series at x/4.

12   >> x/4: next x/4
     == [1 2 3 ["YOW!" 8 7] 4 5 6]
13   >> x
     == [1 2 3 ["YOW!" 8 7] 4 5 6]

These two lines show that the (anonymous!) series in the fourth
position of 'x is a first-class series.  In other words, being a
series has nothing to do with whether a varible is involved.

14   >> a
     == ["YOW!" 8 7]
15   >> a: head a
     == [9 "YOW!" 8 7]
16   >> x
     == [1 2 3 ["YOW!" 8 7] 4 5 6]

'a refers to a series.  That series refers to the same sequence we
as the series of x/4.  As of line 14, all of the three series values
in 'b 'a or x/4 have a current position greater than 1.  The
expression {head a} returns a NEW series.  That new series refers to
the same sequence as the argument series does, but is positioned at
1.  Line 15 evaluates that expression and sets 'a to refer to its
result.  Therefore, the output for 15 shows that the 9 (which was
at the first position of the sequence all along) is still there,
even though all of the series values referring to that sequence
(prior to line 15, remember) had current positions that were past
it.

Clearly, the word "briefly" in my fifth paragraph above does not
refer to the word "briefly" in my Webster's dictionary. ;-)  I
apologize for the length of this "note" (especially to my family,
who are waiting for me with lists in hand...), but hope it helps
move us along.

-jn-

Reply via email to