in terms of useful examples with built ins, the conjunctions @: ` &. would combine with adverbs like each, leaf, or bound adverbs "n L:n.
so writting (1 : '@:v"0 1') as just (@:"0 1) avoids maintaining variations of conjunctions such as amend NB. conjunction version of G} amendL0 amendeach amendrank01 amendrank11 ----- Original Message ----- From: Pascal Jasmin <[email protected]> To: "[email protected]" <[email protected]> Cc: Sent: Thursday, October 10, 2013 8:11:56 AM Subject: Re: [Jprogramming] How to make this conjunction tacit creating a conjunction tacitly is hacky or impossible. currently the train (a c) is a syntax error. What I'd suggest instead is that it be treated as a conjunction. So the explicit (2 : ']`[email protected]') could be written as (]`@.) If 1 conjunction is present in what whould otherwise be an adverb train, then the train should be a conjunction whose right v argument will be lifted into the train and placed to the right of the individual conjunction inside the train More generally, an adverb train that includes a conjunction is a conjunction that you may bind as any other conjunction (u (a a c)) becomes the adverb ((u a a) c), and (a a c)v becomes 'a a c v', and (c a)v would be the adverb '(c v) a' the above was a refinement to this musing: What I would suggest instead is that @: be a "super conjunction". If it was deemed that a tacit version of: 'u a c v' is worthwhile, then (a c @:) would do it. (c @:) would make the adverbe (c v), and (@: c) would make the adverb (u c). One actual usefulness for this might be: (c1 @:) (c2 @:) v1 v2 might turn into (c1 v1) (c2 v2) or just (c1 v1) (c1 v1). > > An alternative to @: as "super conjunction" would be [: . ([: c a a a a) and > (a a a a c [:) ----- Original Message ----- From: Raul Miller <[email protected]> To: Programming forum <[email protected]> Cc: Sent: Thursday, October 10, 2013 12:14:48 AM Subject: Re: [Jprogramming] How to make this conjunction tacit I do not have any reasonable idea what you are talking about here. Can you give some examples? Thanks, -- Raul On Wed, Oct 9, 2013 at 9:48 PM, Pascal Jasmin <[email protected]> wrote: > A bit more on the super- conjunction idea, it turns out that it is not quite > needed. Instead, > > (a a c a) should be a conjunction interpreted as (a a (c (v a))) where v is > the right hand verb. The total train would be: '(u a a) c (v a)' > > it could also be possible to understand (c1 c2) as (u c1) (c2 v), and if so > then > > (a a c1 a c2 a) would be: '(u a a c1) a (c2 v a)' > > There could not be more than 2 conjunctions in an adverb train without the > super conjunction ([: or ]:) idea, but 2 is a big increase over 0. > > > ----- Original Message ----- > From: Pascal Jasmin <[email protected]> > To: "[email protected]" <[email protected]> > Cc: > Sent: Monday, October 7, 2013 5:10:47 PM > Subject: Re: [Jprogramming] How to make this conjunction tacit > > > > Regarding the archeology archive, not all of those seem like good ideas. > What I would suggest instead is that @: be a "super conjunction". If it was > deemed that a tacit version of: 'u a c v' is worthwhile, then (a c @:) would > do it. (c @:) would make the adverbe (c v), and (@: c) would make the adverb > (u c). One actual usefulness for this might be: (c1 @:) (c2 @:) v1 v2 might > turn into (c1 v1) (c2 v2) or just (c1 v1) (c1 v1). > > An alternative to @: as "super conjunction" would be [: . ([: c a a a a) and > (a a a a c [:) > > > ----- Original Message ----- > From: Dan Bron <[email protected]> > To: [email protected] > Cc: > Sent: Monday, October 7, 2013 4:23:36 PM > Subject: Re: [Jprogramming] How to make this conjunction tacit > > Pascal asked: >> How to make this conjunction tacit >> coerce =: 2 : ']`[email protected]' > > > coerce =: ^: > > < coerce (0=L.) 2 > +-+ > |2| > +-+ > < coerce (0=L.) <2 > +-+ > |2| > +-+ > > This particular coercion is also available as a ready-made utility in the > standard library as "boxopen" and its cousin "boxxopen" (which is the same > except it leaves empty arguments unboxed). > > Note that it was trivial to write coerce tacitly because we have a primitive > conjunction that fits the bill (obviating the need for a user-defined > conjunction). In the general case, it is not possible to write tacit > conjunctions. To understand why, read through section §II.F in the DoJ, and > note that while there are rules for producing tacit verbs (e.g. "fork" for +/ > # %) and adverbs (e.g. "adverb train" for /\) there are no rules which > produce conjunctions. > > That said, it may be possible to synthesize or simulate a tacit conjunction > through a series of tacit adverbs, e.g.: > > shanghai=.(`]) (`(;:'`@.')) (@.(0 2 1 3)) > > (0=L.) < yyy > > <`]@.(0 = L.) > > But these tend to be very convoluted, difficult to both write and understand, > and will commonly involve some degree of quoted code anyway, so it is just as > well (actually, better) to write them explicitly in the first place. > > One more note: depending on your needs, you might prefer (0<L.) to (0=L.) . > The former boxes only unboxed nouns; the latter boxes unboxed nouns as well > as anything with a depth _greater_ than one (e.g. try <<2, <<<2, etc). > > -Dan > > PS: In the good old days, §II.F contained a long and rich table of > interpretations for various trains (i.e. sequences of words/word-classes) > which made it possible, among other things, to write conjunctions tacitly. > > Again, these turned out to be convoluted and difficult, and consequently > infrequently used in practice. In turn, it was decided that the cost of > supporting the trains table (i.e. scanning all the possibilities for every > single sentence of J executed) was worth less than they were worth, so the > decision was made to remove it and simplify both the language and the > interpreter. > > That happened in J5, I believe. Anyway, for those interested in archaeology, > or simply in what the language used to permit, check out the old trains table > available at [1] and reproduced below. The rows having product="conj" were > all the ways a J programmer could express conjunctions tacitly. > > [1] Cache of J4 Dictionary §II.F: > http://www.cs.trinity.edu/About/The_Courses/cs2322/jdoc/dict/dictf.htm > > Train Product Interpretation > -------- ------- --------------------- > 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 > > > ---------------------------------------------------------------------- > 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 ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
