2 double &(+&+:) 3 is equivalent to (++:2) double (++:3)
And since neither 2 or 3 has an imaginary part, we can eliminate the complex conjugate which means we have: (+:2) double (+:3) Does that help? Thanks, -- Raul On Mon, Mar 3, 2014 at 11:10 AM, Pascal Jasmin <godspiral2...@yahoo.ca> wrote: > thank you for your explanations dan, > > double =: 3 : 0 > +: y > : > smoutput x > +: y > ) > > > 2 (double &+)&+: 3 > 4 > 12 > > 2 double &(+&+:) 3 > 4 > 12 > > this I understand > 4 (double &+) 6 > 4 > 12 > > and this > (double &+) 6 > 12 > > so this feels like a bug: > > 2 double &(+&+:) 3 > 4 > 12 > > should be able to parenthesize to force monad. Though I get what is > happening to a slight degree, its extremely unusual that x gets modified. > > ----- Original Message ----- > From: Dan Bron <j...@bron.us> > To: "programm...@jsoftware.com" <programm...@jsoftware.com> > Cc: > Sent: Sunday, March 2, 2014 1:59:14 PM > Subject: Re: [Jprogramming] bug in & ? > > Looking at that table, it's clear that the monadic cases of @ and & are > identical, so the difference lies in how they combine dyadic verbs. So maybe > a simpler or more intuitive way to express the difference is: @ expresses > that you want x and y to "meet" _first_, and & expresses you want x and y to > meet last. > > I think this definition will allow us to understand expressions like yours > more intuitively. Rather think of grammar and precedence and rules of > substitution, we just note that +:&+&+: is composed solely with &, so the > combination of x and y will be deferred to the very end, pushed to the > leftmost verb; therefore that +: will be called dyadically, and since dyad +: > has a Boolean domain (both left and right), it will raise a domain error when > invoked with integers (4 and 6 in this case). > > Sent from my iPhone > > >> On Mar 2, 2014, at 10:59 AM, Dan Bron <j@bron. That tablus> wrote: >> >> The sentence 2 +&+&+: 3 expands to (+ +: 2) + (+ +: 3) . This might be >> clearer if we used 3 distinct verbs: x f&g&h y is (g h x) f (g h y) . >> >> In f&g, f retains the valence of the whole verb (is ambivalent), and g is >> always called monadically. By contrast, in f@g, f is always called >> monadically, while g retains the valence of the whole verb (is ambivalent). * >> >> expression | monad (exp y) | dyad (x exp y) >> f&g | f g y | (g x) f (g y) >> f@g | f g y | f (x g y) >> >> (All subject to the rank of g; the rank-independent analogs are &: and @: >> respectively). >> >> -Dan >> >> * Note that The symmetry is not perfect: in f&g, g could be called at most >> twice, if the whole verb is called dyadically (and g is applied monadically >> the the right argument and again monadically to the left argument), whereas >> in f@g, f will be called exactly once (monadically to the result of g, >> whether g itself was called monadically or dyadically; in short, the >> asymmetry mirrors the asymmetry of dyads, which take 2 inputs but produce 1 >> output). >> >> Sent from my iPhone >> >>> On Mar 2, 2014, at 10:33 AM, Pascal Jasmin <godspiral2...@yahoo.ca> wrote: >>> >>> That is indeed the problem, but the code >>> >>> 2 +&+&+: 3 >>> >>> >>> is not 2 + 2 +&+: 3 >>> >>> but rather >>> 0 + 2 +&+: 3 >>> 10 >>> when it should be: >>> + 2 +&+: 3 >>> 10 >>> >>> There doesn't seem to be a good reason to insert 0 v in it. This is weird >>> though: >>> >>> 2 ([: +: ])&(+&+:) 3 >>> 12 >>> >>> I don't think it is: >>> >>> 2+ 2 +&+:3 > ---------------------------------------------------------------------- > 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