[comp.lang.apl] Reply to merge message

loc@tmsoft.UUCP (Leigh Clayton) (01/15/91)

 The following is from Roger Hui, Iverson Software.

>Reply to the following msg re merge.
>
>> From: sam@kalessin.jpl.nasa.gov (Sam Sirlin)
>> Newsgroups: comp.lang.apl
>> Subject: Re: Reassignment in J
>> Message-ID: <1991Jan10.180110.4244@jato.jpl.nasa.gov>
>> Date: 10 Jan 91 18:01:10 GMT
>>
>> Thanks. I looked at merge, but the description is so obscure that
>> I didn't see this simple application. I'm just beginning to understand
>> the boxing necessary in I for indexing. It seems much more complicated
>> than the indexing function from APL 75 (the model for this?).
>>
>> This way of changing values is also less powerful than reassignment, since
>> a duplicate copy of the whole array must be created (unless the language
>> recognizes the idom), which could take substantial memory and time. Of
>> course this mainly affects slow machines with little memory. You
>> also need more characters for both the indexing ( A[2;3] versus (<2;3)}a ).
>> and the copy of "A."
>>
>> --
>> Sam Sirlin
>> Jet Propulsion Laboratory         sam@kalessin.jpl.nasa.gov
>
>First, regarding the description of merge in the Dictionary, I think
>it'd be more accurate to say that it is "terse" rather than "obscure".
>(There is a difference.)  In fact, the description of merge is rather
>distinguished in that it actually contained some examples!
>
>Second, I don't see how merge is "less powerful than reassignment"
>("indexed assignment"), even from the writer's own arguments in the msg.
>The implementation may well be smart enough (for all we know) to avoid
>making a duplicate of the right argument.  In any case, concern about
>possible temporary implementation inefficiencies ought not influence
>the language design.
>
>Third, arguing for merge vs. indexed assignment:
>(0) merge follows the syntax of the rest of J; indexed assignment
>has anomalous syntax.  The benefits of this are twofold: first,
>a consistent syntax makes for simple parsing rules; and second,
>merge, being an ordinary adverb, can be combined readily with other
>constructs in the language.
>(1) merge has no side effects, which among other things bodes well
>for its implementation on non-sequential machine architectures.
>(2) merge permits any verb to be used to select the positions to be
>replaced. e.g. replace the diagonal of a matrix.
>(3) merge permits replacement of multiple subarrays by an identical
>subarray. e.g. replace multiple rows with a single row.
>
>Conclusion: merge is superior to indexed assignment, in syntax and
>in semantics.

-----------------------------------------------------------
loc@tmsoft.UUCP   (Leigh Clayton)   uunet!mnetor!tmsoft!loc