[Jprogramming] "Lazy evaluation" of verbs in
bill lam
bbill.lam at gmail.com
Fri Jul 3 05:09:01 UTC 2020
This is a good suggestion. The zeromq addon can run multiple jconsole
instances in parallel.
On Fri, Jul 3, 2020, 9:52 AM Raul Miller <rauldmiller at gmail.com> wrote:
> Hmm... some other possibilities include running this under jconsole
> and spinning up an instance of J for each 'p', or some other trick to
> show results incrementally (details depend on what you are after).
>
> Like, you could do (untested):
> wd@'msgs' ::]@echo@(0!:111)@".
> instead of
> 0!:111 ".
>
> This would not make anything faster, but would not make you wait so
> long for the first result to appear on screen.
>
> Anyways... I'm probably way off base from where you wanted to go, but
> these are possibilities that might at some point be useful to you.
>
> --
> Raul
>
> On Thu, Jul 2, 2020 at 9:40 PM Raul Miller <rauldmiller at gmail.com> wrote:
> >
> > One approach would be that you saved the result of each 'p' file in a
> > corresponding 'o' file. If you want to get fancy you could even make
> > it so that if the 'p' were newer the 'o' would be ignored. But
> > manually deleting the 'o' would make that unnecessary.
> >
> > This leaves some details unspecified -- like should you use ". or 5!:5
> > or 3!:1 or map_jmf_ in the process of generating the 'o' files?
> >
> > But, anyways, if you defined the interface you could use it.
> >
> > Thanks,
> >
> > --
> > Raul
> >
> >
> > On Thu, Jul 2, 2020 at 4:48 AM ethiejiesa via Programming
> > <programming at jsoftware.com> wrote:
> > >
> > > Hey J,
> > >
> > > Wanted to share this and see what you think.
> > >
> > > For Project Euler solutions in J, I have a single file and run it like
> this:
> > >
> > > $ ./project-euler.ijs <1> [<m> ..] # output answers to problem
> n, m, ...
> > >
> > > Initially, I had a scheme where all solutions are named like p1, p2,
> etc. with
> > > the following at the bottom of the script:
> > >
> > > echo ".&> (#~ 0 = 4!:0) 'p'&,&.> ARGV
> > > exit at 0:^:(e.~ <@'./project-euler.ijs') ARGV
> > >
> > > It just straightforwardly tacks 'p' to the beginning of all arguments,
> filters
> > > out the missing/nonsense stuff, and executes the result. The second
> line
> > > ensures the script exits when called directly but not when 'load'ed in
> the
> > > jconsole.
> > >
> > > Anyway, the above scheme works but execution starts to get slow as more
> > > solutions accumulate since it ends up computing *all* p1, p2, etc.
> before
> > > output. So I wanted to "lazily" evaluate only those solutions
> requested on the
> > > command line.
> > >
> > > My first approach was to "lazy load" by making all p1, p2, etc.
> strings and
> > > evaluating with
> > >
> > > 0!:111 ".&> (#~ 0 = 4!:0) 'p'&,&.> ARGV
> > >
> > > However, this strikes me as a bit ugly. It also makes it a bit awkward
> to
> > > investigate and iterate on solutions when loading into jconsole.
> > >
> > > So the scheme I came up with is a simple modification of the initial
> approach.
> > > Instead of p1, p2, etc. we now have [x1], v1, y1, [x2], v2, y2, etc.
> (where
> > > [x1] means that x1 is optional). Effectively we want to expand the
> argument '1'
> > > into 'x1 v1 y1' or 'v1 y1' as appropriate and then execute. This is
> how I am
> > > achieving that:
> > >
> > > echo ". ,"_1 ,&' '&> |: (#~"1 (0 3 0) = 4!:0) 'xvy' ,&.>/ ARGV
> > >
> > > It's quite nice how closely this mirrors the original approach. After
> the hook,
> > > we have a table whose columns encode the executions we want. Finally,
> a bit of
> > > munging gives the desired result.
> > >
> > > Thoughts? Is this Good J TM?
> > > ----------------------------------------------------------------------
> > > For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
More information about the Programming
mailing list