Hi Jürgen,

Maximum array depth is typically a system limit, like maximum rank.
Ideally, there shouldn't be anything you can type in which will cause the
system to barf, but I can understand you not wishing to incur additional
overhead.

This isn't something working code is going to want to do, so I guess it
matters little if it gets checked or not.

Just thought I'd mention it.

Regards,

Mike



On Sat, Aug 22, 2015 at 1:31 PM, Juergen Sauermann <
[email protected]> wrote:

> Hi Mike,
>
> your function *NEST* creates an extremely deep  process call stack when
> enclosing extremely deeply nested values (proportional to the nesting
> depth).
>
> Your operating limits the size of your call stack in order to protect
> other processes against programming faults (or extremely unreasonable
> programs which are difficult to distinguish from programming faults).
>
> If you really want (actually you dont - believe me) your function to
> succeed,
> then you should lift the default limit of your *GNU/Linux* like this:
>
> *ulimit -s unlimited*
> *   # no limit on the stack size *
> After that, *GNU APL* says:
>
> *      ≡10 NEST 0*
> *1024*
> *      ≡17 NEST 0*
> *131072*
>
> In theory one could check or limit the nesting depth of a value in GNU APL,
> but the run-time overhead would be significant.
>
> /// Jürgen
>
>
> On 08/19/2015 11:57 PM, Mike Duvos wrote:
>
>
>       ∇NEST[⎕]∇
>     ∇
> [0]   Z←N NEST X;I
> [1]   Z←X
> [2]   I←¯1
> [3]  L1:→((I←I+1)≥N)/0
> [4]   (∊Z)←⊂,Z
> [5]   →L1
>     ∇
>
>       ≡10 NEST 0
> 1024
>       ≡15 NEST 0
> 32768
>       ≡16 NEST 0
> 65536
>       ≡17 NEST 0
> Bus error (core dumped)
> ubuntu@ip-172-31-35-10:~$
>
>
>

Reply via email to