9!:53 [ 0 is the old (safe) behavior
9!:53 [ 2 is the new (possibly unsafe) behavior
Now beta-12 is default to 9!:53[2
What is the sensible default could be discussed in the jbeta forum,
before it is too late.
Пн, 03 окт 2016, Raul Miller написал(а):
> I mentioned (a=:0](a) because we seem to be talking about changing the
> implementation.
>
> Specifically, if we are going to be introducing optimizations which
> damage the value of a in some fashion where the interpreter cannot
> restore it, I think we should restrict those optimizations to cases
> where the code has clearly indicated that damaging a in the error case
> is acceptable.
>
> I do not see any good reason for accepting this behavior:
>
> a=: 3 1 4 1 5 9 2
> a =: ('b' ,~ 3 ,~ ]) a
> |domain error
> | a=: ('b',~3,~])a
> a
> 3 1 4 1 5 9 2 3
>
> That is not how J has worked in the past, it does not correspond to
> the dictionary description of how parsing works, it seems unnecessary,
> and I believe it's only there because of an "optimization".
>
> A problem is: if you optimize for incorrect behavior, you wind up with
> something that does the wrong thing, real fast.
>
> And, ok, in some contexts that kind of thing can be an important compromise.
>
> In this case, however, it seems entirely unnecessary.
>
> That said, if you think I have overlooked something important, please
> educate me.
>
> Thanks,
>
> --
> Raul
>
>
> On Mon, Oct 3, 2016 at 8:59 PM, Henry Rich <[email protected]> wrote:
> > The (a=:0)](a) trick, while clever, does not work in the implementation
> > because (a =: 0) does not actually reduce the usecount of a until the
> > sentence completes.
> >
> > Henry Rich
> >
> >
> > On 10/3/2016 7:21 PM, Raul Miller wrote:
> >>
> >> This has been bothering me. After sleeping on it, I think I know how
> >> to articulate my concerns:
> >>
> >> It seems unnecessary.
> >>
> >> First, the error handling in this case could restore the shape of a to
> >> its original value and that seems like it should be simple.
> >>
> >> However, also, in hypothetical analogous cases where error recovery
> >> would be difficult, there's another approach that could be used:
> >> replace the reference to a with (a=:0)](a)
> >>
> >> This frees a's reference to the array, and makes it clear, also, that
> >> it's good to destroy a when an error occurs.
> >>
> >> a =: b ([ ,~ 3 ,~ ]) (a=:0)](a)
> >>
> >> (Note also that the parenthesis around a are not optional here. There
> >> are other expressions which achieve the same effect, but you can't use
> >> just a bare a there and have it work right.)
> >>
> >> 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
--
regards,
====================================================
GPG key 1024D/4434BAB3 2008-08-24
gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3
gpg --keyserver subkeys.pgp.net --armor --export 4434BAB3
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm