I updated http://www.jsoftware.com/jwiki/PascalJasmin/double%20adverbs%20vs%20conjunctions
(at bottom) with a double adverb implementation of this. The punchline: 2 an + (i.5)an *: tie tie tie 0 1 2 agenda 2 3 4 5 6 and 1&+ +: 2 4 6 an tie tie @. 0 1 0 2 7 11 15 1&+ +: 2 4 6 an tie tie 0 1 0 2 agenda 7 11 15 ----- Original Message ----- From: Joe Bogner <[email protected]> To: [email protected] Cc: Sent: Friday, January 30, 2015 9:30 AM Subject: Re: [Jprogramming] conjunction in tacit verb 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
