A general issue with explicit code is that 

h =: 3 : '...'  cannot be set once because its possible for the contents of the 
explicit code to reassign h.

h f."0 y 


though could fix h to "original definition" and so ignore side effects during 
execution of "this instance"

h h f."0 y would apply the new (if any) h definition if it is reset during 
execution of first (rightmost) h.

h@h f."0 would not.




----- Original Message -----
From: Jose Mario Quintana <jose.mario.quint...@gmail.com>
To: sou...@jsoftware.com
Sent: Monday, September 19, 2016 11:42 AM
Subject: Re: [Jsource] Why is dual calculated at verb-execution time?

A potential alternative could be to delegate the optimization to fix (f.).
That is,  f.   (in all its forms) would recursively optimize any instances
of (forms involving) &. and &.: that it encounters when it is replacing all
the names recursively by their referents.

On Sun, Sep 18, 2016 at 4:16 PM, Raul Miller <rauldmil...@gmail.com> wrote:

> Related, though, is how much time it takes to find if g contains names.
>
> If this can be significant, it might be worth going to the extra effort to
> delay examining it for names until the point where you are prepared to use
> its inverse. (And, having an "inverse that contains names" be a different
> result than "inverse which does not contain names.)
>
> Or, another approach might be to spread out the cost of determining that
> and putting the information in the verb definition.
>
> (Purely performance based changes should probably include a test against
> the full test suite of unrelated operations just to make sure that they are
> not imposing a significant cost on the general case?)
>
> Meanwhile, as an aside, I noticed this:
>
>    1 2 1&p. inv 16 25
> |domain error
>
> It looks like we are not supporting some potential inverses (or, ok,
> obverses...) which we could be supporting. (And, yes, I know, two choices
> here... but we do ok with things like arccosine despite a multiplicity of
> choices.) But, of course, that is probably another project....
>
> --
> Raul
>
>
>
> On Sun, Sep 18, 2016 at 3:57 PM, Henry Rich <henryhr...@gmail.com> wrote:
>
> > The point to me is that if you execute f&.g 1000 times, you only need the
> > inverse of g once.
> >
> > Henry
> >
> > On 9/18/2016 1:09 PM, Raul Miller wrote:
> >
> >> Mmm....
> >>
> >> I think you need the inverse of h regardless of whether it contains any
> >> names.
> >>
> >> But I guess the point is that you do not need the inverse of h until
> after
> >> g has completed. And organizationally speaking doing the check right at
> >> the
> >> start (at or near the top level) makes sense.
> >>
> >> ...
> >>
> >> That said, was baffled by steps 2 and 3 here, until I took a look at
> >> jtundco1
> >>
> >> Now, I think the example h=: f&.:g should be introduced, to match that
> >> implementation.
> >>
> >> Thanks,
> >>
> >>
> > ----------------------------------------------------------------------
> > 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