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