thanks jurgen, i havent had time to pull latest and compile, but i
appreciate the fix.

- Rowan

On Tue, Apr 7, 2020, 5:58 AM Blake McBride <blake1...@gmail.com> wrote:

> Thanks.  I saw that after I sent the email.  When I used APL, there was no
> APL2.  So, I've never used APL2 professionally.
>
> I also see that the latest repo version has a fix for the original report.
>
> Thanks!
>
> Blake
>
>
> On Tue, Apr 7, 2020 at 4:37 AM Dr. Jürgen Sauermann <
> mail@jürgen-sauermann.de> wrote:
>
>> Hi,
>>
>> actually it assigns a new value (*6 7* in the example) to a part of *x*.
>> Even though *⊃⊃x *is a temporarym
>> the assignment changes the original *x*.
>>
>> I suppose IBM APL2 does the same.
>>
>> BR, Jürgen
>>
>>
>> On 4/7/20 1:28 AM, Blake McBride wrote:
>>
>> Without assigning it to a variable, I don't see what sense the
>> statement even makes.
>>
>>  (⊃⊃x)
>>
>> produces an intermediate value.  I can't think of what sense making an
>> assignment to an intermediate value even does.
>>
>> I think APL should just throw a syntax error as in:
>>
>>       (+/10 10⍴⍳100)[2]←4
>> SYNTAX ERROR
>>       (+/10 10⍴⍳100)[2]←4
>>       ^                ^
>>
>> (Surely a syntax error is more appropriate than a segfault!)
>>
>> What does IBM APL do?
>>
>> --blake
>>
>>
>> On Sat, Apr 4, 2020 at 5:03 PM Rowan Cannaday <cannad...@gmail.com>
>> wrote:
>>
>>> hello y'all, hope everyone is staying safe.
>>>
>>>       x ← 1 (2 3 (4 5))
>>>       (⊃⊃x)[2;3;] ← 6 7
>>>
>>>
>>> ===================================================
>>> SEGMENTATION FAULT
>>>
>>> ----------------------------------------
>>> -- Stack trace at main.cc:88
>>> ----------------------------------------
>>> 0x7F032D7BABBB __libc_start_main
>>> 0x557F8B045425  main
>>> 0x557F8B1BE755   Workspace::immediate_execution(bool)
>>> 0x557F8B099A4B    Command::process_line()
>>> 0x557F8B09A45A     Command::do_APL_expression(UCS_string&)
>>> 0x557F8B099AE8      Command::finish_context()
>>> 0x557F8B0A3698       Executable::execute_body() const
>>> 0x557F8B159D4C        StateIndicator::run()
>>> 0x557F8B0DB23D         Prefix::reduce_statements()
>>> 0x557F8B0DA17D          Prefix::reduce_MISC_F_B_()
>>> 0x557F8B0F1F4F           Bif_F12_PICK::eval_B(Value_P)
>>> 0x557F8B0EBB33            Bif_F12_PICK::disclose(Value_P, bool)
>>> 0x557F8B0EB86A             Bif_F12_PICK::compute_item_shape(Value_P,
>>> bool)
>>> 0x7F032DCD1520
>>> 0x557F8B04C4AB
>>> ========================================
>>> ====================================================
>>>
>>> By the way, it works if you use an intermediary variable:
>>>
>>>       y←⊃⊃x
>>>       y[2;3;]
>>> 4 5
>>>       y[2;3;] ← 5 6
>>>       y
>>> 1 0
>>> 0 0
>>> 0 0
>>>
>>> 2 0
>>> 3 0
>>> 5 6
>>>
>>> Cheers,
>>>  - Rowan
>>>
>>
>>

Reply via email to