I owe you a longer reply, but I'm having trouble finding the time recently.
In short, if you compose a vet using only &, then x and y won't be combined until te very last verb. As Raul said, your expression is equivalent to the one he gave, and no amount of parenthesizing will change the meaning of & from "post processor" to "pre processor". If you want to "force monad", you should use @ instead of & . For example, if you want a verb that gives the double of the sum of twice x plus twice y, then you could say +:@+&+: : double=: 3 :'smoutput ''monad only'' label_. +: y ' : (4 : ' smoutput x label_. +: y') double ( (+:2) + (+:3) ) monad only 20 2 double@+&+: 3 monad only 20 2 +:@+&+: 3 20 Sent from my iPhone > On Mar 3, 2014, at 1:54 PM, Raul Miller <rauldmil...@gmail.com> wrote: > > 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 ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm