Thanks, Elijah! This was very helpful.

I think I was sort of hallucinating that the mere presence of [. and ].
would change the meaning of the entire train,
the way the mere presence of  u and v changes the meaning of a direct
definition, but of course that's not the case.

I am going to have to meditate on (].~)@: for a while.. I see it, but I
don't quite believe it. :D

Thanks!

On Thu, Apr 21, 2022 at 6:30 AM Elijah Stone <elro...@elronnd.net> wrote:

> On Thu, 21 Apr 2022, Michal Wallace wrote:
>
> > I then thought that replacing u => [. and v => ]. would let me remove
> the
> > double curlies, but clearly this is the wrong idea:
> >
> >   AA =: ([. @: ].) ]. ]
> >   _: AA (3 AT) ;/i.10
> > +-+-+-+-+-+-+-+-+-+-+
> > |0|1|2|3|4|5|6|7|8|9|
> > +-+-+-+-+-+-+-+-+-+-+
> >
> > I don't really understand what it's doing but I'm (mistakingly?)
> imagining
> > that it's a fork.
>
> Let's break it down.  Starting inside the parens: ([. @: ].) is a train of
> three conjunctions; that is a conjunctive fork.  The rule is: u(C0C1C2)v
> is
> (uC0v)C1(uC2v).  C0 is [., C1 is @:, and C2 is ]. .  u[.v is u (by
> definition), and u].v is v (by definition).  So u([. @: ].)v is
> (u[.v)@:(u].v), which is u@:v.  Which means that [. @: ]. is just an
> obfuscated way of writing @:, similar to to the verb fork [ + ] .
>
> That means your AA definition is equivalent to @: ]. ] .  @: ]. ] is also
> a
> conjunctive fork.  It is not CCC, but CCV; the right tine of the fork is
> constant.  This is analogous to an NVV verb fork, where the left tine is
> constant.  The rule here is: u(C0C1V2)v is (uC0v)C1V2.  C0 is @:, C1 is
> ].,
> and V2 is ] .  So, regardless of what u and v are, we will get (u@:v) ].
> ],
> which is just ] .
>
> A conjunctive fork _is_ a fork, but there is no reason to believe it will
> _produce_ a verb fork.
>
> > If it were a fork with ] on the right, I think I should be able to
> rewrite
> > it like so:
> >
> >   AA =: ].~ ([. @: ])
> >
> > But this gives a syntax error.... Why?
>
> This is very close to working.  The issue is that when producing trains,
> the
> parser tries to eat as many terms as it can.  So for instance, in a
> regular
> verb train, it could have been defined that f g h is a two-level hook,
> equivalent to f (g h).  But then we wouldn't be able to make forks.  So we
> say
> that a 3-train will be formed whenever there are at least 3 terms
> available;
> and we will only form a 2-train when we have no other choice.  Your
> definition
> is ]. ~ ([. @: ].), that is CAC; and no meaning has yet been assigned to
> CAC,
> so it is a syntax error.  But you want (CA)C.  Parenthesizing as (].~) ([.
> @:
> ].) gives a result that works!  (And this is effectively the same as the
> solution of (].~) @: I gave; I missed this before, when I was skimming.)
>
>
> > So okay, if I just put ] back in on the left:
> >
> >   AA =: ] ].~ ([. @: ].)
> >   _: AA (3 AT) ;/i.10
> > _
>
> Now you are running into grouping issues again.  I don't quite understand
> the
> parsing rules for longer trains--it is simply left-to-right in simple
> cases,
> but more interesting in other cases; pascal has a wiki article about
> it--but
> in this case it does work out nicely left to right.  We can ask the repl
> how
> this sentence parenthesises:
>
>     AA =: ] ].~ @:
>     AA
> (] ]. ~)@:
>
> We had VCAC, and it was grouped as (VCA)C.  VCA is an adverb; so the
> sentence
> as a whole is AC, which is also an adverb; not a conjunction.  So it is
> not
> surprising that you got nonsense results here :)  Left as an exercise to
> you
> is to figure out exactly why you get the result that you do.
>
> In general, I suggest referring to the table at
> https://code.jsoftware.com/wiki/Vocabulary/fork#invisiblemodifiers at
> frequent
> intervals, and querying parenthesisation at the repl.
>
>   -E
> ----------------------------------------------------------------------
> 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