That said, note that the use of u, v, m, n, x or y in adverbs makes it that adverb an explicit adverb.
Thanks, -- Raul On Sun, Feb 1, 2015 at 5:41 PM, 'Pascal Jasmin' via Programming <[email protected]> wrote: > regarding the 2nd link, and the definitions mainly from bottom of > http://www.jsoftware.com/jwiki/PascalJasmin/double%20adverbs%20vs%20conjunctions > > in double adverb form, > > +: 5 10 20 an tie 0 1 agenda > 10 20 40 > +/ % # 5 10 20 an tie tie tie (0 1 2 ;3) agenda > 11.6667 > > though it seems to work without ^: "tricks" > +: 5 10 20 an tie > ┌──┬───────────┐ > │+:│┌─┬───────┐│ > │ ││0│5 10 20││ > │ │└─┴───────┘│ > └──┴───────────┘ > > +: 5 10 20 an tie @. 0 1 > 10 20 40 > > > > > > > ----- Original Message ----- > From: Jose Mario Quintana <[email protected]> > To: Programming forum <[email protected]> > Cc: > Sent: Sunday, February 1, 2015 4:07 PM > Subject: Re: [Jprogramming] conjunction in tacit verb > > "Or, you can use ]^:]" > > Sneaky? (See, > http://www.jsoftware.com/pipermail/programming/2013-January/031234.html > and > http://www.jsoftware.com/pipermail/programming/2013-January/031236.html > ) > > " > But maybe it's also easy enough to use J's parser and not bother with > tacit for this kind of exercise? > " > > Maybe, but the question that started this thread was, > "Is it possible to define f tacitly?" > > > > On Sun, Feb 1, 2015 at 3:38 PM, Raul Miller <[email protected]> wrote: > >> Or, you can use ]^:] >> >> It's not really that hard. >> >> http://www.jsoftware.com/help/dictionary/d202n.htm says: >> >> u^:( v1`v2)y ↔ u^:(v1 y) (v2 y) >> >> So let's make v1 be 0: and v2 be a data structure which represents our >> entire calculation: >> >> ]^:] 0:`(+:@:(0 1 2 3 4"_)) >> 0 2 4 6 8 >> >> Now all we need is a verb which transforms >> (+:`*:;i.5) >> to >> 0:`(+:@:(0 1 2 3 4"_)) >> >> It's straightfoward to do this explicitly. >> >> Let's define a test: >> >> ex=: +:`*:;i.5 >> assert 0:`(+:@:(0 1 2 3 4"_)) -: fe ex >> >> Now we just need to define fe so that the above script does not throw >> an error. So take a look at what 0:`(+:@:(0 1 2 3 4"_)) looks like and >> transcribe that to code: >> >> fe=:3 :0 >> '0:';<'@:';<((0;0){::y);<(,'"');<((,'0');1{::y);<((,'0');_) >> ) >> >> Testing: >> >> ]^:] fe ex >> 0 2 4 6 8 >> >> Now.. that expression for fe is messy, and a little tedious to write, >> but if you don't mind a little bit of trial and error and >> investigation while you work through whatever uncertainties you have >> about what you are seeing, you can do it. >> >> And converting it to tacit can be done like this: >> >> fe=:13 :0 >> '0:';<'@:';<((0;0){::y);<(,'"');<((,'0');1{::y);<((,'0');_) >> ) >> >> (And then look at the definition of fe using linear representation.) >> >> Oh, but that's cheating! >> >> Um... why? >> >> It's not, not really. You learn from whatever interests you. >> >> That said, it *can* be an interesting exercise to construct sensibly >> named concepts for building that kind of data structure. >> >> But maybe it's also easy enough to use J's parser and not bother with >> tacit for this kind of exercise? >> >> Thanks, >> >> -- >> Raul >> >> >> On Sun, Feb 1, 2015 at 3:09 PM, Jose Mario Quintana >> <[email protected]> wrote: >> > " >> > The agenda trick doesn't quite solve the problem though due to train >> > formation rules: >> > " >> > >> > Actually, when evaluating atomic representations, gerunds, etc. whatever >> > one can accomplish using train (`:6) one can accomplish it using agenda >> > (@.) as well (and vice versa). >> > >> > JVERSION >> > Installer: j602a_win.exe >> > Engine: j701/2011-01-10/11:25 >> > Library: 6.02.023 >> > >> > ( agenda=. Cloak <'@.' ) NB. @. verbalized >> > ,^:(0:`@.) >> > >> > u=. agenda&0 1@:({.@:(0&({::)) ; an@:>@:{:) f. >> > u (+:`*:;i.5) >> > 0 2 4 6 8 >> > >> > Alternatively, >> > >> > caravan=. agenda&0@:< >> > >> > u=. caravan@:({.@:(0&({::)) ; an@:>@:{:) f. >> > u (+:`*:;i.5) >> > 0 2 4 6 8 >> > >> > I find train more intuitive but agenda more suitable for heavy duty. >> > >> > >> > On Fri, Jan 30, 2015 at 9:30 AM, Joe Bogner <[email protected]> wrote: >> > >> >> I hear a faint whisper calling me to this dark side... >> >> >> >> I have seen these posts[1] when I had just started using J and didn't >> >> understand them. I went down the rabbit hole for a few hours this >> >> morning >> >> >> >> The first post in the list was particularly enlightening >> >> >> >> NB. was gfy in Dan's post >> >> an=. <@:((,'0') ,&< ]) >> >> >> >> NB. 2 + i.5 >> >> ((an 2);'+';(an i. 5);'*:') @. (0 1 2) >> >> 2 3 4 5 6 >> >> >> >> NB. Let's square everything >> >> ((an 2);'+';(an i. 5);'*:') @. (3 0 1 2) >> >> 4 9 16 25 36 >> >> >> >> NB. You can even see syntax errors, which can help debugging >> >> ((an 2);'+';(an i. 5);'*:') @. (0 1 1 1) >> >> |syntax error >> >> | 2+++ >> >> >> >> Let's get some more syntax errors: >> >> >> >> ((an 2);'+';(an i. 5);'*:') @. (3#(3 0 1 2)) >> >> |syntax error >> >> | *:*:*:2 2 2+++0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 >> >> >> >> >> >> NB. +: +: +: +: (2+i.5) >> >> ((an 2);'+';(an i. 5);'+:') @. ((4#3),(0 1 2)) >> >> 32 48 64 80 96 >> >> >> >> >> >> NB. adverbs too >> >> ('+';'/';(an i.5)) @. (0 1 2) >> >> 10 >> >> >> >> add1=.1&+ >> >> ((ar 'add1');(an (2 4 6))) @. (0 1) >> >> 3 5 7 >> >> >> >> And then coming back around to my original question: >> >> >> >> ((ar 'add1');'+:';(an (2 4 6))) @. (0 1 0 2) >> >> 7 11 15 >> >> >> >> versus this monstrosity (beware of linebreaks) >> >> gapply=:([: >@:}. (([: }. >&{.) ; >@:{.@:>@:{. 128!:2 >> >> >@:}.)^:({.@:$@:>@:{.)) >> >> >> >> gapply ('1&+';'+:';'1&+');(2 4 6) >> >> 7 11 15 >> >> >> >> The agenda trick doesn't quite solve the problem though due to train >> >> formation rules: >> >> >> >> gapply ('1&+';'+:';'1&+';'1&+');(2 4 6) >> >> 8 12 16 >> >> >> >> ((ar 'add1');'+:';(an (2 4 6))) @. (0 1 0 0 2) >> >> 9 13 17 >> >> >> >> You train verb worked well though as an alternative >> >> >> >> Thank you! >> >> >> >> [1] - >> >> http://www.jsoftware.com/pipermail/programming/2013-March/031883.html >> >> [2] - >> >> http://www.jsoftware.com/pipermail/programming/2013-January/031236.html >> >> >> >> On Thu, Jan 29, 2015 at 5:55 PM, Jose Mario Quintana >> >> <[email protected]> wrote: >> >> > "Is it possible to define f tacitly?" >> >> > >> >> > J tacit programming is Turing complete; thus, any verb can be defined >> >> > tacitly. It can be difficult sometimes but this case is easy... If >> one >> >> is >> >> > prepared to venture to the dark side. >> >> > >> >> > >> >> > an=. <@:((,'0') ,&< ]) >> >> > >> >> > NB. Dark side of the force... >> >> > >> >> > Cloak=. ((5!:1)@:<'Cloak')Cloak=. (0:`)(,^:) >> >> > ( train=. (Cloak <'`:')&6 ) NB. `:6 verbalized >> >> > ,^:(0:``:)&6 >> >> > >> >> > v=. train@:({.@:(0&({::)) ; an@:>@:{:) f. >> >> > >> >> > >> >> > v (+:`*:;i.5) >> >> > 0 2 4 6 8 >> >> > >> >> > >> >> > On Thu, Jan 29, 2015 at 1:20 PM, Joe Bogner <[email protected]> >> wrote: >> >> > >> >> >> Is it possible to define f tacitly? >> >> >> >> >> >> f=: 3 : '({.@:>@:{.y)`:0 (>@:}.y)' >> >> >> f (+:`*:;i.5) >> >> >> >> >> >> 0 2 4 6 8 >> >> >> >> >> >> It's meant to take the first gerund from a box that contains a list >> of >> >> >> gerunds and data to operate on >> >> >> >> >> >> It's an odd circumstance that needed it. I could probably rework the >> >> >> logic but now I'm curious if it can be done >> >> >> >> >> >> Some things I tried: >> >> >> >> >> >> a=:(+:`*:;i.5) >> >> >> >> >> >> f1=:{.@:>@:{. >> >> >> f1 a >> >> >> ┌──┐ >> >> >> │+:│ >> >> >> └──┘ >> >> >> >> >> >> f2=:>@:}. >> >> >> f2 a >> >> >> 0 1 2 3 4 >> >> >> >> >> >> >> >> >> Tried various version of combining f1 and f2 to no avail >> >> >> >> >> >> This works: >> >> >> >> >> >> g`:0 f2 a [ g=. f1 a >> >> >> 0 2 4 6 8 >> >> >> >> >> >> I'm thinking there might be a way to do it without the assignment? >> >> >> >> ---------------------------------------------------------------------- >> >> >> 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 > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
