From:         loc@yrloc.ipsa.reuter.COM (Leigh Clayton)
Subject:      box vs. nest
X-Telephone:  +1 (416) 364-5361 Fax +1 (416) 364-2910 Telex 0622259
Organization: Reuters APL Software Division
X-Mail:       1900/2 First Canadian Place, Toronto, Canada, M5X 1E3
Date:          6 Oct 92 14:17:42 UT

 In response to <921005051057_70530.1226_CHH4-3@CompuServ.COM> posted by Mike
Kent <70530.1226@CompuServ.COM>

 I'll accept your historical correction, although your correction is itself
simplistic: Jim's thesis didn't happen in isolation as Smith (among many others
even including my own humble self) spent years discussing the axioms and
behaviours of 'generalied' arrays around the time he wrote it (to be honest I
don't recall the date of his thesis). My understanding was that Bob talked Jim
into one of the things I dislike most about APL2 (the redefinition of
reduction) which was why I slanted my post that way.

 Your arguments about both pervasion and strand notation are quite circular
(something I'm used to from years of talking to APL2 users :-). It is true
that the dictionary (which is *not* a stone tablet, by the way) defines box in
terms of a new datatype, but that doesn't have to be taken too literally if it
becomes a constricting characterisation. The distinction between 'type' and
'structure' in this issue are made too much of.

 I accept that it is nice to be able to come up with pleasing identities (such
as your arguments based on indexing versus enclose or your redefinition of
scalar extension) but these things seem to me to be a poor basis on which to
design a language. Surely it's the *uses* to which you can put something that
is really important. This is why I think function rank is so important. It is
true that you can derive it from the notion of scalar extension, and you can
write some nice identities based on it and so forth, but the real issue is that
it lets you do things you couldn't without it.

 As for your specific examples:

 It is true that Sharp APL (and thus the dictionary) do not include pervasion,
and thus the dictionary includes language that precludes it. The particular
wording is irrelevant, really. The datatype analogy is clear, that's all. Your
conclusions based on this wording are fairly irrelevant, as we would obviously
change that wording if we decided to introduce pervasion. The leap of logic
that equates pervasion with scalar extension is interesting, but certainly not
indisputable. In my own opinion it extends the feel of APL in a very novel
direction, and gives you too little benefit to justify the violence it does to
the remainder of the language (but this is just my opinion, after all).

 The argument in which you define enclose based on the behaviour of indexing
into a strand is also cute, but again it isn't mandated in any way. The
inclusion of strands is used to validate the quirky definition of enclose, and
the definition of enclose is used to define how strands are interpreted. I am
not saying the whole thing doesn't end up being self-consistant (I'd be very
surprised if it didn't) but self-consistancy isn't the only criterion by which
to judge a programming language (or else designing them would be a trivial
exercise in creating cutsey self-supporting axiom systems).

 Anyway, I don't at this point think there's any chance of converting a single
APL2 user (believe me I've tried, most recently with Phil Benkard :-). We'll
just have to agree to disagree [until APL2 finally dies, strangled by it's own
strands, leaving us as the lone defenders of truth and light :-]

.../Leigh

--------------------------------------------------------
It's only work if somebody makes you do it    .../Calvin
--------------------------------------------------------
Leigh Clayton                  loc@yrloc.ipsa.reuter.COM
    -or-                     loc@ipsaint.ipsa.reuter.COM
Newsgroups:   comp.lang.apl