Re: New XT release

Subject: Re: New XT release
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Wed, 21 Apr 1999 08:47:44 -0700
At 99/04/21 08:58 -0500, Paul Prescod wrote:
>I'm not sure why xsl:constant is now named xsl:variable. I see no way of
>assigning to them (other than declaring them!) so they are not really
>variable.

Paul, this is the way I felt until I expressed the same opinion on the
DSSSL list and was promptly (and heavily) chastized for having expressed
such a misleading comment!

:{)

I wouldn't dare chastize you (or anybody else) since I felt the same way
myself, so I'll just let you read what was said to me.

Since reading Frank's comments, I agree with his reasoning and now better
understand the specification writers' use of the term.

I hope this helps.

........ Ken


From: "Frank A. Christoph" <christo@xxxxxxxxxxxxxxxxxx>
To: <dssslist@xxxxxxxxxxxxxxxx>
Subject: Re: Global variable
Date: Tue, 2 Mar 1999 12:20:38 +0900

[G. Ken Holman]
>You can calculate and bind values to variables (a bit of a misnomer since
>they can't vary!) within a given (let) scope, you can bind a fixed value to
>a top level variable, but you can't change the value of a variable once
bound.

I can't resist replying to your appalling suggestion that "variable" is a
misnomer here. This contradicts at least 400 years of a mathematical
practice. If anything, it is the use of the word "variable" in imperative
programming languages like C that is misleading (not because C variables
aren't variables, but because they are much more sophisticated than plain
old everyday variables).

A variable in the mathematical sense most certainly _does_ vary; it varies
over its domain of values. It is the _denotation_ of such a variable that
does not vary, i.e., its meaning, what it refers to. If I write, for example,

(define x 6)

then I am saying that 1) x is a DSSSL variable, and hence it varies over
the set of DSSSL values, and 2) its _value_ happens to be the constant, 6. 

The fact that x is a variable, not a constant, is evident from the
semantics of DSSSL expressions, which dictate that I can substitute the
value of x for any occurrence of x without changing the meaning of
enclosing expressions (well, not really, but for the most part this is
true). The definition above expresses the fact that x = 6; consequently,
for any expression E in the scope of this definition, I can substitute 6
for x in E, written E[6/x], and be assured that E = E[6/x] because x = 6.
For example, (+ x x)[6/x] = (+ 6 6) follows from x = 6 which follows from
(define x 6) being in (the nearest) scope. More generally, this is known as
Leibniz's law of substitution of equals (for equals).

--FC



--
G. Ken Holman                  mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
Crane Softwrights Ltd.           http://www.CraneSoftwrights.com/s/
Box 266, Kars, Ontario CANADA K0A-2E0  +1(613)489-0999  (Fax:-0995)
Website: XSL/XML/DSSSL/SGML services outline,  XSL/DSSSL shareware,
         stylesheet resource library, conference training schedule,
         commercial stylesheet training materials, on-line XSL CBT.
Next instructor-led XSL Training:                   WWW8:1999-05-11


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread