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