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 >> > >