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:~$ > > >
