Thanks, Jüergen. SVN 307 is, I think, *almost* correct.

My reading of the IBM Reference suggests that 3⊃⎕ec should be character
matrix having three rows.


On Mon, Jun 2, 2014 at 7:10 AM, Juergen Sauermann <
juergen.sauerm...@t-online.de> wrote:

> Hi David,
>
> sorry, my fault. I hadn't read the small sentence for result=0 that
> it should be ⎕EM-like. Fixed in SVN 307.
>
> Please note that GNU APL may open execution contexts (= SI-entries)
> differently from
> IBM APL so that sometimes error messages could differ. The error code is
> normally
> correct, but if an error is user-defined then the error message from the
> user (⎕ES)
> could be lost because the context generating it was closed already. In
> that case
> the context retuns an error token (containing the error code) but the
> token does not
> contain the entire error message.
>
> /// Jürgen
>
>
>
> On 06/02/2014 02:26 AM, David B. Lamkins wrote:
>
>> Hi Jüergen,
>>
>> Sorry for the miscommunication.
>>
>> SVN 306 does fix 2⊃⎕ec. However, 3⊃⎕ec is still incorrect.
>>
>> 3⊃⎕ec should be the same as what ⎕em would have been without ⎕ec in the
>> case where ⎕ec traps an error.
>>
>> Specifically: 3⊃⎕ec should be a three-row text array in which line 1 is
>> the error message (which may be the text provided to a ⎕es), line 2 is
>> the offending line of code and line 3 is the error caret(s). This is the
>> same three error-message lines that would have been printed to the APL
>> session without the ⎕ec.
>>
>> This behavior is covered elsewhere on page 280 of the IBM Reference. I
>> apologize for having left the `paragraph 3' reference in my first email.
>>
>> On Sun, 2014-06-01 at 18:53 +0200, Juergen Sauermann wrote:
>>
>>> Hi David,
>>>
>>> thanks, fixed in SVN 306.
>>>
>>> /// Jürgen
>>>
>>>
>>> On 05/31/2014 07:51 PM, David B. Lamkins wrote:
>>>
>>>> See the IBM Reference, page 280, paragraph 3.
>>>>
>>>> When ⎕EC executes an expression that signals a user-defined error, the
>>>> second and third items of the result should be the same as the
>>>> expression's ⎕ET (which would be 0 1 in this case) and ⎕EM. GNU APL
>>>> returns 0 0 and 'User defined error'.
>>>>
>>>> Note also that ⎕ET must not be changed by ⎕EC. GNU APL already does this
>>>> correctly.
>>>>
>>>> It's not clear from the IBM Reference whether ⎕EM should also not be
>>>> changed by ⎕EC. It seems reasonable to assume that *not* changing ⎕EM is
>>>> the correct behavior; the whole point of ⎕EC is to execute an expression
>>>> in a controlled manner. If so, GNU APL is already correct in this
>>>> regard.
>>>>
>>>>
>>>>         ⎕es 'foo'
>>>> foo
>>>>         ⎕ES 'foo'
>>>>         ^
>>>>         ⎕em
>>>> foo
>>>>         ⎕ES 'foo'
>>>>         ^
>>>>         ⎕et
>>>> 0 1
>>>>         ⎕ec '⎕es ''foo'''
>>>>    0  0 0  User defined error
>>>>         ⎕em
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>
>>
>


-- 
"Far out in the uncharted backwaters of the unfashionable end of the
Western Spiral arm of the Galaxy lies a small unregarded yellow sun.
Orbiting this at a distance of roughly ninety-eight million miles is an
utterly insignificant little blue-green planet whose ape-descended life
forms are so amazingly primitive that they still think programming in Java
is a pretty neat idea."

 -- With apologies to Douglas Adams, who I like to think would have
appreciated this.


http://soundcloud.com/davidlamkins
http://reverbnation.com/lamkins
http://reverbnation.com/lcw
http://lamkins-guitar.com/
http://lamkins.net/
http://successful-lisp.com/

Reply via email to