Some of your list of "all possible tridents and bidents" would only be possible if other parsing rules were removed or evaded (monad, dyad, adverb, conjunction).
For example, the first one you list: N0 V1 N2 noun x V1 y This would typically be a dyad, and I cannot think of any way for it to be treated as a triad (it's true, of course, that when you modify the interpreter it's true that you can alter it in any way you see fit - but it's difficult to think of this result as being J). Was that your intent, or am I missing something? (Or... if you really meant to be discussing not "J" but more "a topic which might interest some people in the J community", shouldn't this kind of discussion go on in a different forum? Perhaps chat?) Thanks, -- Raul On Thu, Oct 12, 2017 at 5:48 PM, Jose Mario Quintana <[email protected]> wrote: > A common goal of the Jx trains and many of the Jx primitives and foreign > conjunction entities is to lift J's draconian (tacit) function-level > restrictions. Jx facilitates tacit verbs, adverbs, and conjunctions to act > on nouns, verbs, adverbs and, conjunctions and > produce nouns, verbs, adverbs and, conjunctions. That is, almost any type > entity can act on any type entity to produce any type entity. > > The Jx trains are either completely new or extended implementations of > current or former trains. The Jx trains conform to the general scheme of > the Parse Table shown on page 2 of the Cheatsheet and the only difference > vs the current J Parse Table is the Trident parsing entry. > > This extra entry might have a potential negative effect in Jx's performance > vs J; after all, that was one of the reasons given for dropping the Trains > of the Golden Age (for reference I am including, at the end of this post, a > text version which most likely matches the one in the link that Bill > provided earlier). How important is the performance penalty? I would be > surprised if it is significant; one could try to quantify it although the > usual caveats would apply (e.g., repeat the experiments several times to > confirm results). > > First, a few useful definitions follow to facilitate the discussion, > > o=. @: > 'adv conj ver'=. _1 _2 _3 <@?: 0 > fix=. f. ver NB. (a v) form > > > a v <-> v(a) > > This form is non-compliant; thus, it is intrinsic only to Jx. One can use > this form, for instance, to produce easily arrays with single or multiple > boxed adverb arguments and verbs (or adverbs or conjunctions) can act on > the array. For example, a single boxed adverb, > > /< > ┌─┐ > │/│ > └─┘ > > and multiple boxed adverbs, > > [:(/\<) (items < o fix o ":) (table < o fix o ":)]: > ┌──┬───┬──────────────────────────────────────────────────────────────┐ > │/\│"_1│1 : (':'; '(((#~LF-.@e.])5!:5<''u'');,.y),.({.;}.)":x,y u/x')~│ > └──┴───┴──────────────────────────────────────────────────────────────┘ > > This form also helps to avoid quoting adverbs. Apart from aesthetical > effects (my aesthetics anyway), it allows the verb xi, which I have > mentioned before, to refer directly to an adverb (or adverbs) within a > sentence. > > > x (a a) <-> (x a) a > > This form corresponds to the entry > > A0 A1 adv (x A0) A1 > > of the Parse Table of the Golden Age. To my knowledge, it has not been > fully implemented before. Currently, J only works if the product of (x a) > is a noun or a verb (there have been discussions about producing the train > if the product of (x a) is an adverb. Jx implements that and also the case > when the product of (x a) is a conjunction. This is very useful when > writing tacit adverbs as a train of adverbs: if ((x a) a) produces the > desired product then the adverb (a a) would work because (x (a a) <-> (x a) > a). For example, > > 'items' ((~ver) adv) / > items/ > 'items' (((~ver) adv) /) > items/ > > 'items' ('x~' (adverb :)) / > items/ > 'items' (('x~' (adverb :)) \) > items\ > > The last line produces instead a syntax error in J. > > > a c <-> (c)a > > This form is non-compliant; thus, it is also intrinsic only to Jx. Its > motivation parallels the one for the form (a v <-> v(a)). For example, a > single boxed conjunction, > > <adv (`/) > ┌───┐ > │` /│ > └───┘ > > and multiple boxed conjunctions, > > [:(<adv") (< o fix o ": adv bind)]: > ┌─┬─────────────┐ > │"│2 : 'x@(y"_)'│ > └─┴─────────────┘ > > > The Jx extensions of the corresponding Golden age entries, > > x (c a) y <-> x c y a : C0 A1 conj (x C0 y) A1 > x (a c a) y <-> (x a) c (y a) : A0 C1 A2 conj (x A0) C1 (y A2) > > deserve, in my opinion, a separate thread. I will try to start one during > the weekend (time permitting). Succinctly, the two trains (the first one, > in particular) are powerful enough that if they were restored in official J > interpreters then conjunctional tacit programming would be virtually > complete as opposed to impossible. > > I hope it helps, > > PS. I wish I had more time to read and respond to posts more frequently; > however, most of the time, I eventually respond if I feel I can still > contribute. Thank you for your patience. > > > Train Table of the Golden Age > > (see, > http://www.jsoftware.com/pipermail/programming/2009-December/017146.html > and http://www.jsoftware.com/pipermail/programming/2009-December/017145.html > ) > > The following tables define all possible tridents and bidents, using > italics to denote the optional left arguments of (ambivalent) verbs: > > N0 V1 N2 noun x V1 y > V0 V1 V2 verb (x V0 y) V1 (x V2 y) > V0 V1 C2 conj V0 V1 (x C2 y) > A0 V1 V2 adv (x A0) V1 V2 > C0 V1 V2 conj (x C0 y) V1 V2 > C0 V1 C2 conj (x C0 y) V1 (x C2 y) > A0 A1 V2 conj (x A0) (y A1) V2 > A0 A1 A2 adv ((x A0) A1) A2 > C0 A1 A2 conj ((x C0 y) A1) A2 > N0 C1 N2 verb x (N0 C1 N2) y > N0 C1 V2 verb x (N0 C1 V2) y > N0 C1 A2 adv N0 C1 (x A2) > N0 C1 C2 conj N0 C1 (x C2 y) > V0 C1 N2 verb x (V0 C1 N2) y > V0 C1 V2 verb x (V0 C1 V2) y > V0 C1 A2 adv V0 C1 (x A2) > V0 C1 C2 conj V0 C1 (x C2 y) > A0 C1 N2 adv (x A0) C1 N2 > A0 C1 V2 adv (x A0) C1 V2 > A0 C1 A2 conj (x A0) C1 (y A2) > A0 C1 C2 conj (x A0) C1 (x C2 y) > C0 C1 N2 conj (x C0 y) C1 N2 > C0 C1 V2 conj (x C0 y) C1 V2 > C0 C1 A2 conj (x C0 y) C1 (y A2) > C0 C1 C2 conj (x C0 y) C1 (x C2 y) > N0 A1 verb x (N0 A1) y > N0 C1 adv N0 C1 x > V0 N1 noun V0 y > V0 V1 verb x (or y) V0 V1 y > V0 A1 verb x (V0 A1) y > V0 C1 adv V0 C1 x > A0 V1 adv (x A0) V1 > A0 A1 adv (x A0) A1 > A0 C1 adv (x A0) C1 x > C0 N1 adv x C0 N1 > C0 V1 adv x C0 V1 > C0 A1 conj (x C0 y) A1 > > > On Thu, Oct 12, 2017 at 3:51 AM, Erling Hellenäs <[email protected]> > wrote: > >> Hi all ! >> >> I have a hard time finding the new rules among these old rules. >> >> While in the Jx description x and y denotes verbs, in Ken Iversons >> description they denote nouns? >> >> Take the bident a0 v1. According to Ken Iverson it should be parsed as (x >> a0) v1, while in Jx, using the same notation, it is parsed as (v1 a0) y ? >> >> Does Jx represent a new way of thinking about how these trains should be >> parsed, which Ken Iverson did not have? >> >> Cheers, >> >> Erling Hellenäs >> >> >> >> Den 2017-10-12 kl. 04:09, skrev bill lam: >> >>> As mentioned earlier, ancient J had a more complete set of >>> rules for tridents and bidents. This is what availbale in >>> J circa 1994 (23 years ago) >>> >>> https://i.imgur.com/OtBZZq1.jpg >>> >>> In the good old days, adverbs and conjunctions can be >>> written without explicit definitions, albeit only very >>> few can manage to do that. >>> >>> Ср, 11 окт 2017, Erling Hellenäs написал(а): >>> >>>> Hi all! >>>> >>>> I finally managed to understand Cloak. I then with interest studied these >>>> new syntax rules: >>>> >>>> av ↔ v(a) >>>> x(a a) ↔ (x a) a >>>> ac ↔ (c)a >>>> x(c a) y ↔ x c y a >>>> x(a c a) y ↔ (x a) c (y a) >>>> >>>> It all seemed logical and nice. I just wonder about the thoughts behind. >>>> What is the logic behind these rules? >>>> >>>> I also wonder if there are any negative effects of having these rules. >>>> >>>> Cheers, >>>> >>>> Erling Hellenäs >>>> >>>> >>>> >>>> On 2017-09-30 23:27, Jose Mario Quintana wrote: >>>> >>>>> Jx 1.1 Release >>>>> >>>>> A Jx v1.1 Extensions Guide, a J/Jx Cheatsheet, a Jx Assertions script >>>>> together with links to a Windows 64 bit dll, a Unix 64 bit so binaries >>>>> (without avx support) and the patch corresponding to the J806 source >>>>> (beta-6) can be found at the link [0]. >>>>> >>>>> Summary >>>>> >>>>> - Primitives >>>>> Added =.. =:: $:: [. ]. ]: ".. `. &:.(*) ?:(*) i.. O. >>>>> Extended ~ $. >>>>> Modified " (*) >>>>> >>>>> - Foreign >>>>> Added 104!:5 Unnamed Execution 102!:0/1 In-place >>>>> Amend/Append (*) >>>>> >>>>> - Trains >>>>> a v Added >>>>> a a Extended >>>>> c a Resurrected and extended (*) >>>>> a c a Resurrected and extended (*) >>>>> >>>>> - Spelling >>>>> Names with Unicode characters >>>>> >>>>> (*) New Jx 1.1 feature >>>>> >>>>> This release introduces a modified primitive (") and, in theory, for the >>>>> first time an incompatibility vs the official J counterpart (J806 >>>>> beta-6) ; >>>>> however, in practice, it is highly unlikely to break any existent code >>>>> and >>>>> doubters have an opportunity to test their code. >>>>> >>>>> This is a simple 1-decade-old example [1], >>>>> >>>>> ]`|."1 i.5 6 >>>>> 0 1 2 3 4 5 >>>>> 11 10 9 8 7 6 >>>>> 12 13 14 15 16 17 >>>>> 23 22 21 20 19 18 >>>>> 24 25 26 27 28 29 >>>>> >>>>> See also the threads [2, 3] for recent discussions. >>>>> >>>>> The rank of the verb ?: has been changed to 0 0 0 to make it easier to >>>>> use. >>>>> >>>>> Three venerable facilities are released: >>>>> >>>>> - The conjunction (&:.), for the motivation, see the post [4] (see also >>>>> the >>>>> post [5] both, its reference and the embedded discussion for similar >>>>> more >>>>> recent ideas). >>>>> >>>>> - 102!:0/1 In-place Amend/Append, be very careful (see [6]); if you do >>>>> not >>>>> know what to expect, play with their corresponding models instead. >>>>> >>>>> PS. There are a couple of other goodies which will be documented later. >>>>> >>>>> >>>>> References >>>>> >>>>> [0] Jx 1.1 Release >>>>> http://www.2bestsystems.com/foundation/j/jx1.1 >>>>> >>>>> [1] [Jprogramming] zig-zag order Oleg Kobchenko >>>>> http://www.jsoftware.com/pipermail/programming/2006-November >>>>> /004188.htm >>>>> >>>>> [2] [Jprogramming] How m"n shoulda been defined Henry Rich >>>>> http://www.jsoftware.com/pipermail/programming/2015-August/0 >>>>> 42512.html >>>>> >>>>> [3] [Jprogramming] Jx version 1.0 release Henry Rich >>>>> http://www.jsoftware.com/pipermail/programming/2017-August/0 >>>>> 48124.html >>>>> >>>>> [4] [Jforum] Wasted intermediate values Jose Mario Quintana >>>>> http://www.jsoftware.com/pipermail/general/2003-March/014488.html >>>>> >>>>> [5] [Jprogramming] Fold/reduce with initial value? R.E. Boss >>>>> http://www.jsoftware.com/pipermail/programming/2015-February >>>>> /041015.html >>>>> >>>>> [6] [Jprogramming] Tacit J and indexed replacement Jose Mario Quintana >>>>> http://www.jsoftware.com/pipermail/programming/2014-July/038 >>>>> 515.html >>>>> ---------------------------------------------------------------------- >>>>> 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
