Hi Ala'a
thanks, fixed in SVN 798.You will now get a DOMAIN ERROR
instead of
a failed assertion.
The DOMAIN ERROR is being reported because you try to compare
objects that
would be called left values in C/C++, so your code is also wrong.
I would also
be careful with using A⍳B if A or B
becomes large. For regular structures like
abc←'abcdefghijklmnopqrstuvwxyz'
abc⍳XXX
you might consider using something like
0 ⌈ 26 ⌊ ¯97 +
⎕UCS XXX
which will decrease your execution time from O((⍴A)×(⍴B))
down to O(⍴B).
/// Jürgen
On 10/16/2016 04:51 PM, Ala'a Mohammad
wrote:
I was trying to assign order to a word letters for example 'zach' is
312, I got it finally, for example for 'maine'
abc←'abcdefghijklmnopqrstuvwxyz'
1+(⌽⍳5)[(⍋abc⍳'maine')]
4 1 3 5 2
But I got the following failing assertion and wanted to check if
something related to my code or the interpreter.
I'm using
GNU APL
: apl -v
BUILDTAG:
---------
Project: GNU APL
Version / SVN: 1.6 / 796
Build Date: 2016-09-26 18:43:22 UTC
Build OS: Linux 3.13.0-37-generic x86_64
config.status: unknown configure options
Archive SVN: 787
Operating system is Linuxmint 17.1 64bit (Linux rock 3.13.0-37-generic
#64-Ubuntu SMP Mon Sep 22 21:28:38 UTC 2014 x86_64 x86_64 x86_64
GNU/Linux)
Regards,
Ala'a
---------------------------------------------------------------------------------------
abc←'abcdefghijklmnopqrstuvwxyz'
abc⍳'maine'
12 0 8 13 4
⍋abc⍳'maine'
1 4 2 0 3
(⍋abc⍳'maine')←⍳5
equal() called on object of classLvalCell
==============================================================================
Assertion failed: 0
in Function: equal
in file: Cell.cc:117
Call stack:
----------------------------------------
-- Stack trace at Cell.cc:117
----------------------------------------
0x7fb94a6e9f45 __libc_start_main
0x446105 main
0x56b84d Workspace::immediate_execution(bool)
0x487e89 Command::process_line()
0x487f2d Command::do_APL_expression(UCS_string&)
0x4923c8 Executable::execute_body() const
0x5201b0 StateIndicator::run()
0x4c57e9 Prefix::reduce_statements()
0x4c4d59 Prefix::reduce_MISC_F_B_()
0x460d8f Bif_F12_SORT_ASC::eval_B(Value_P)
0x45fdaf Bif_F12_SORT::sort(Value_P, Sort_order)
0x47746a Cell::greater_vec(Cell const*, Cell const*, void const*)
0x476b78
0x4552df do_Assert(char const*, char const*, char const*, int)
========================================
SI stack:
Depth: 79
Exec: 0x1796ad0
Safe exec: 0
Pmode: ◊ (⍋abc⍳'maine')←⍳5
PC: 9 ENDL
Stat: (⍋abc⍳'maine')←⍳5
err_code: 0x0
thrown: at StateIndicator.cc:39
e_msg_1: 'No Error'
e_msg_2: ''
e_msg_3: ''
Depth: 78
Exec: 0x17b2af0
Safe exec: 0
Pmode: ◊ abc[s]
PC: 4 ENDL
Stat: abc[s]
err_code: 0x50005
thrown: at Value.cc:1050
e_msg_1: 'INDEX ERROR+'
e_msg_2: ' abc[s]'
e_msg_3: ' ^ ^'
Depth: 77
Exec: 0x17b2820
Safe exec: 0
Pmode: ◊ s⌷abc
PC: 3 ENDL
Stat: s⌷abc
err_code: 0x50002
thrown: at PrimitiveFunction.cc:2308
e_msg_1: 'RANK ERROR'
e_msg_2: ' s⌷abc'
e_msg_3: ' ^ ^'
Depth: 76
Exec: 0x17b2e30
Safe exec: 0
Pmode: ◊ abs⍳s
PC: 2 'abs
Stat: abs⍳s
err_code: 0x30001
thrown: at Symbol.cc:662
e_msg_1: 'VALUE ERROR'
e_msg_2: ' abs⍳s'
e_msg_3: ' ^'
Depth: 75
Exec: 0x17d0ae0
Safe exec: 0
Pmode: ◊ abs[s]
PC: 3 'abs
Stat: abs[s]
err_code: 0x30001
thrown: at Symbol.cc:662
e_msg_1: 'VALUE ERROR'
e_msg_2: ' abs[s]'
e_msg_3: ' ^'
Depth: 74
Exec: 0x17a1e40
Safe exec: 0
Pmode: ∇ λ1[1]
PC: 13 ←
==============================================================================
Assertion failed: idx < items_valid
in Function: operator[]
in file: Simple_string.hh:140
Call stack:
*** do_Assert() called recursively ***
==============================================================================
|