http://www.jsoftware.com/pipermail/programming/2013-February/031684.html might interest you.
-- Raul On Thu, Oct 10, 2013 at 8:11 AM, Pascal Jasmin <[email protected]> wrote: > 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
