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 >