the gerund } is weird too.  Here is a result I don't understand (might be a 
bug?):

    3 +`((0 0;1 1;2 2)"1)`]} i.3 3
9  1  2
3 10  5
6  7 11

The middle part created 3 3 $ (0 0;1 1;2 2) and you amended using that; in other words, you wrote the main diagonal 3 times, leaving the last values, which were 3 + 6 7 8.

Henry Rich




----- Original Message -----
From: Dan Bron <[email protected]>
To: "[email protected]" <[email protected]>
Cc:
Sent: Sunday, March 30, 2014 9:16:51 AM
Subject: Re: [Jprogramming] Item amend ~: index error.

You can tell immediately whether ~ is performing passive, reflexive , or evoke.

Did you pass it a noun? Then it's evoke (this is very rare and very obvious: 
remember, as an adverb, ~'s argument is fixed at runtime, so you'd literally 
have to write or see a noun directly to the left of ~).

You didn't pass it a noun? Ok, by definition, you passed it a verb. So ~ 
consumed that verb and produced a new verb. Did you pass that new verb one 
argument, or two arguments?

If you passed the new verb one argument (aka "invoked the monad") then ~ will act in its 
reflexive capacity. If you passed the new verb two arguments (aka "invoked the monad") 
then ~ will act in its passive capacity.

In other words, f~ ↔️ (] f ]) : (] f [) . That is, given a verb f, f~ will 
produce an ambivalent verb which will always invoke the dyadic valence of f 
(the monadic valence of f is thus ignored and therefore irrelevant). When f~ is 
invoked, the left argument to f will always be the right argument of f~ .

Thus, the only difference between passive and reflexive is the right argument 
to f, which will be the left argument of f~ if it has one (ie if f~ was invoked 
dyadically) or the same old right argument as before if it doesn't (ie if f~ 
was invoked monadically and the only argument around to use is on the right).

So ~ is hardly a demon from hell, because you know what you're getting when you 
invoke it. The incantations are simple and the consequences predictable.

-Dan

Ok, need a mnemonic?

'name'~ : evoke the name (call upon, summon up, conjure, recall)

verb~ y : reflect the argument (mirror, create a perfect image, clone, put a 
mirror up so the verb sees two identical copies, etc)

x verb~ y : use the passive voice (switch the subject and object, invert the 
sentence, etc):

Pascal invoked Astaroth
Astaroth was invoked by Pascal

[do not try this at home]

[1] "Why was ~ on a dyadic verb named "passive"?
     http://www.jsoftware.com/pipermail/general/2007-May/030070.html


Sent from my iPhone
On Mar 30, 2014, at 8:31 AM, Pascal Jasmin <[email protected]> wrote:

} is an adverb.
~ is a demon from hell for errors in that it can do one of 3 things (passive, 
reflex, evoke), and often its one of the other 2 than you intended.  (here you 
were assuming it would do passive).  I'm not 100% positive which of the other 2 
it actually gets parsed at here.


----- Original Message -----
From: EelVex <[email protected]>
To: Programming forum <[email protected]>
Cc:
Sent: Sunday, March 30, 2014 7:07:05 AM
Subject: [Jprogramming] Item amend ~: index error.

     (0 1 2) } (i. 3 3)
0 4 8

     (i. 3 3) }~ (0 1 2)
|index error
|       (i.3 3)}~(0 1 2)

Why? What's the use of }~ when not used as 'amend'?
----------------------------------------------------------------------
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

Reply via email to