I think, in this case, that we are working against the language definition. That tends to introduce quirks and other problems into the language.
Specifically, I think we would be working against http://www.jsoftware.com/help/dictionary/dictg.htm and the table introduced by the phrase "Dyadic verbs (e.g. + - * % , = <) that require argument type conversions". So, rather than introducing a special case which requires inspection of arguments, maybe the right thing to do is to define an adverb which implements a different type conversion table on behalf of whatever verb it's working with? That said, I set out to write such a thing, and got stalled when trying to figure out how reliably and efficiently coerce a floating point array to integer type. Specifically: MAXINT=: +/1,(#~1-2&|)".":x:+:^:(4>:3!:0)^:a:1 MININT=: _1-MAXINT 3!:0 MAXINT,MININT 4 3!:0 <.MININT>.( MAXINT+0.01)<.MAXINT-1 8 Basically, I'm not sure how to deal with this existing quirk: x:MAXINT 9223372036854775807 x:( MAXINT-0.01)<.MAXINT-511 9223372036854775808 9!:14'' j804/j64/darwin/release/commercial/www.jsoftware.com/2015-12-21 18:06:25 Any suggestions? Thanks, -- Raul On Wed, Feb 3, 2016 at 2:02 PM, Dan Bron <[email protected]> wrote: > I know we have yet to organize a formal process for building and > disseminating a community-driven implementation of J, but in anticipation of > that day’s arrival, perhaps we can start collecting community-driven > proposals for enhancements? > > One such enhancement could be special code that detects whether the argument > to an arithmetic dyad is the scalar _ (or __ or _.) and if so, avoids > demoting the other argument to double if it’s already extended or rational. > > I have other ideas too. But maybe we should collect them on the Wiki? > > -Dan > > >> On Feb 2, 2016, at 9:12 PM, Henry Rich <[email protected]> wrote: >> >> No, extendeds promote to float on mixed operations. >> >> Henry Rich >> >> On 2/2/2016 9:09 PM, 'Pascal Jasmin' via Programming wrote: >>> 9223372036854736345 <. _ >>> 9.22337e18 >>> >>> result is a double. <. double is the closest integer it can find. >>> >>> this seems like a problem though: >>> >>> >>> 9223372036854736345x <. _ >>> 9.22337e18 >>> >>> >>> >>> ----- Original Message ----- >>> From: Henry Rich <[email protected]> >>> To: Programming forum <[email protected]> >>> Sent: Tuesday, February 2, 2016 9:05 PM >>> Subject: [Jprogramming] When a <. _ is less than a >>> >>> I'm stepping up to the world of 64-bit integers, and stepping into cowflops. >>> >>> This took me quite a while: >>> >>> <. 9223372036854736345 <. _ >>> >>> 9223372036854735872 >>> >>> >>> See that? Take the minimum of (number) and (infinity), and the result >>> is less than (number)! >>> >>> Yes, I understand why it happens. Now I do. Be warned. >>> >>> Henry Rich >>> ---------------------------------------------------------------------- >>> 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 ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
