Generating that list of numbers is trivial, compared to typical
language processing.

Consider a classic "for" loop, which calls a function 100 times. Here,
you are also generating 100 numbers. It's true that they are not
stored in memory simultaneously, but you're also generating 100 stack
frames, one after another -- and the cost of constructing those is
significant. Writing to one memory location is less work than
populating a typical stack frame.

Also, in terms of actual memory consumed -- unless you're up in the
megabytes, you aren't going to even notice it on modern machines.

That said, if your concern is the *relevance* of the numbers, I'd go
with something like:

   1,.~? 100 $ ,: 2 1024 768

Which, looking at what Cliff Reiter suggested, is basically the same concept.

Good luck,

-- 
Raul

On Thu, Dec 24, 2020 at 7:29 AM emacstheviking <[email protected]> wrote:
>
> Clifford,
>
> I don't like the boxing either, I also don't like the fact that generation
> of a list of numbers that I don't even use (i. 100) just to call a function
> N times was the only solution I could find. I almost don't ask questions
> around here as it makes me feel even more stupid than I normally feel for
> having to ask in the first place.
>
> Your solution is just another confirmation to me that the day J is more
> ubiquitous than JavaScript is the same day that World Peace breaks out,
> starvation ends, and we all live happily evert after.
>
> Thanks, I will study that single line of code very very closely.
>
> Sean.
>
>
> On Thu, 24 Dec 2020 at 11:53, Clifford Reiter <[email protected]> wrote:
>
> > You might look at avoiding the boxing; for example
> >
> > ?10 # ,:3 1024 768
> >
> > 1 259 473
> >
> > 1 628 503
> >
> > 0 672 357
> >
> > 2 1003 559
> >
> > 0 407 117
> >
> > 2 620 116
> >
> > 0 840 45
> >
> > 2 581 444
> >
> > 2 166 629
> >
> > 1 217 202
> >
> >
> >
> >
> >
> > On Thu, Dec 24, 2020 at 5:48 AM emacstheviking <[email protected]> wrote:
> >
> > > I have a simple verb that returns a list of randomised numbers
> > >
> > > stargen=: monad define
> > > 'maxx maxy'=.y
> > > (?2),(?maxx),(?maxy), 1
> > > )
> > >
> > > For the life of me I have failed to just call it and create a table of
> > the
> > > results.
> > >
> > > Initially I tried 100 $ stargen 1024;768 but that just calls it once and
> > > cycle repeats the same value one hundred times, close but no tobacco
> > > related products in sight.
> > >
> > > Then I ended up with this version
> > >
> > >    sg =: 3 : '(?2),(?100),(?100)'
> > >    sg2 =: 3 : '(?3),(?0{::y),(?1{::y),1'
> > >
> > > and the nearest I got to what I need is this:
> > >
> > >    > (sg) each i. 10
> > > 0 53 53
> > > 0 52 25
> > > 0 38 96
> > > 1 92 75
> > > 0 31 47
> > > 1 87 65
> > > 1 74 11
> > > 0 30 75
> > > 0  4 51
> > > 1 64 99
> > >
> > > but when I use the version that takes 1024;768 as the y value (sg2) I
> > get a
> > > domain error,
> > >
> > >    > (sg2 1024;768) each i. 10
> > > |domain error
> > > |   >(sg2 1024;768)    each i.10
> > >
> > > each is defined as &.> which as I understand it (probably wrong) first
> > > unboxes the list of integers 0..9 which wasn't even boxed in the first
> > > place (but I am stuck, after all), after the unboxing it then does the &.
> > > (under) which applies ....why am I tell you this, you know this.
> > >
> > > Eventually I considered making my verb (stargen) a dyad and tackling it
> > > this way, which works:
> > >
> > >    sg3
> > > 4 : '(?3),(?0{::x),(?1{::x),1'
> > >
> > > and running it like this:
> > >
> > >   > (1024;768)&sg3 each i. 10
> > > 2 1013 257 1
> > > 0  251 127 1
> > > 2  957 732 1
> > > 0  508 263 1
> > > 2  358 340 1
> > > 2 1012 731 1
> > > 0   82 436 1
> > > 1  228  57 1
> > > 1  990 759 1
> > > 1  102   4 1
> > >
> > > I just wanted a table of N rows of stargen output, passing in the current
> > > window dimensions. Fail! :D
> > > Looking for a better / neater / more J like way of doing this so I can
> > > learn for future sessions.
> > >
> > > Thanks
> > > Sean
> > > ----------------------------------------------------------------------
> > > For information about J forums see http://www.jsoftware.com/forums.htm
> > >
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
> >
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to