Tacit meta-programming is the underground playground.

First, regarding your original post, the verb process that I posted
recently (see,
http://www.jsoftware.com/pipermail/programming/2015-April/041539.html)
almost produces what you want (the orthodox version or otherwise):

   process=. < o train o ([ ; (an o >) y)("0)

   ( G=. (*:`%: ,. +:`^) )
┌──┬──┐
│*:│+:│
├──┼──┤
│%:│^ │
└──┴──┘
   ( L=. 1 2 )
1 2

   G process <4
┌──┬───────┐
│16│8      │
├──┼───────┤
│2 │54.5982│
└──┴───────┘
   G process 1;2
┌───────┬───────┐
│1      │2      │
├───────┼───────┤
│1.41421│7.38906│
└───────┴───────┘

Actually, a simplified version of process produces what you want (I think):

   process=. train o ([ ; an y)("0) f.

   G process 4
16       8
 2 54.5982

   G process L
      1       2
1.41421 7.38906

Second, regarding,
"
For example, if G =:  *:`+:`^  and list =. 3 4 5
I want an adverb or conjunction that returns a verb of the form (3&*@:*:) +
(4&*@:+:) + (5&*@:^)
"

The request is similar to the question posed in the post
http://www.jsoftware.com/pipermail/programming/2008-January/009553.html and
an underground answer is also similar to the one posted in
http://www.jsoftware.com/pipermail/programming/2014-November/040108.html :

The powers of verbs verb ( pv=. (box x (at&>~ / .(power e)) ])f. ) can be
modified as follows:

plus=. train o ([ , (<'+') , ]) STAR=. >@:((box <'*')"_) NB. * boxed asa=.
(] amper STAR) at [ NB. amper star at ( vrb=. > o (box x (< o plus/ .(asa
e)) ])f. ) >@:(<@:(,^:(0:``:)&6)"0@:[ <@:(,^:(0:``:)&6@:([ , (<'+') , ]))/
.(((] ,^:(0:`&) >@:((<*)"_)) ,^:(0:`@:) [)&.>) ]) G vrb L 3&*@:*: + 4&*@:+:
+ 5&*@:^ G vrb L 1 2 3 24.5914 64.9453 151.428

Note that vrb is a verb; it is an underground solution after all. It is not
difficult to cloak it as an adverb but sadly, because the form (c a) was
removed a long time ago, it is not possible to cloak it as a conjunction
using a current official interpreter. In extended J (see,
http://www.jsoftware.com/pipermail/programming/2013-March/031835.html) ,
particularly in a version that is still cooking, is not only possible but
there is a lot more support to make underground tacit meta-programming even
easier.

I am appalled that you overlooked the significance of my posts... I am, of
course, kidding (I could not resist) ;)

P.S.

NB. Collected definitions... o=. @: (x=. o[) (y=. o]) (e=. &.>)
((o[)(o]))(&.>) an=. <@:((,'0') ,&< ]) Cloak=. ((5!:1)@:<'Cloak')Cloak=.
(0:`)(,^:) 'at amper evoke'=. Cloak o < e o ;: '@: & `:' train=. evoke&6 f.
box=. < o train "0 NB. First... ( G=. (*:`%: ,. +:`^) ) ┌──┬──┐ │*:│+:│
├──┼──┤ │%:│^ │ └──┴──┘ ( L=. 1 2 ) 1 2 process=. train o ([ ; an y)("0) f.
G process 4 16 8 2 54.5982 G process L 1 2 1.41421 7.38906 NB. Second...
plus=. train o ([ , (<'+') , ]) STAR=. >@:((box <'*')"_) NB. * boxed asa=.
(] amper STAR) at [ NB. amper star at ( vrb=. > o (box x (< o plus/ .(asa
e)) ])f. ) >@:(<@:(,^:(0:``:)&6)"0@:[ <@:(,^:(0:``:)&6@:([ , (<'+') , ]))/
.(((] ,^:(0:`&) >@:((<*)"_)) ,^:(0:`@:) [)&.>) ]) ( G=. *:`+:`^ ) ┌──┬──┬─┐
│*:│+:│^│ └──┴──┴─┘ ( L=. 3 4 5 ) 3 4 5 G vrb L 3&*@:*: + 4&*@:+: + 5&*@:^
G vrb L 1 2 3 24.5914 64.9453 151.428



On Sun, Apr 19, 2015 at 4:13 AM, Jon Hough <[email protected]> wrote:

> Roger, Raul,
> Thanks. Raul's answer is essentially what I needed. And I now have
> Learning J Chapter 14 open in my browser .
> I am still unsure about a few things, hopefully someone can clear these up.
> 1. If I have my nxn gerund array and I want to evaluate it on a list of n
> items, such that the first row takes the first item, the second row takes
> the second item etc.
> e.g.  (*:`%: ,. +:`^) VRB 1 2
> should evaluate to
> 1 14 7.38906
> where VRB is some verb. Learning J, 14.3.1 has a similar example but in
> that case VRB = `:0 and it evaluateseach verb for the whole list. At first
> I thought I could do something like (`:0)"(1 0) but I still get unwanted
> results, namely, in the above case, I get 2x2x2 matrix as output. My
> workaround is just to take only the desired rows from the output.
> 2. This problem is a little bit more abstract.
> If I have a list of gerunds (1D this time), and I want to modify each verb
> in the gerund in some way, and then return the sum of the verbs, I am not
> sure how to do this.
> For example, if G =:  *:`+:`^  and list =. 3 4 5
> I want an adverb or conjunction that returns a verb of the form (3&*@:*:)
> + (4&*@:+:) + (5&*@:^)
> My attempt was to do
> len =: # G output =. '' for_j i. len do. output =. output +
> ((j{list)&*@:(G`:6)) end. output
> This is getting me nowhere however. I am actually not sure why it fails.
> One problem I am guessing exists is in the line output =. '' , which I used
> to 'initialize' the output verb. I am unsure if this is legal though.
> Regards,Jon
>
> > Date: Sun, 19 Apr 2015 08:35:34 +0100
> > From: [email protected]
> > To: [email protected]
> > Subject: Re: [Jprogramming] Evaluating a Gerund Array
> >
> > Maybe "Learning J" section 14.3.1 might be useful.
> >
> >
> >
> > On 19/04/2015 06:51, Jon Hough wrote:
> > > My problem is slightly more complicated than the one I am giving in
> the example,but in essence the problem is, given a 2x2 array of gerunds,
> and anumber, how can I return a 2x2 array of the gerunds evaluated for the
> number.
> > > e.g.
> > >
> > > arr =: *:`%:
> > >
> > >
> > >
> > >     arr2 =: +:`^
> > >
> > >
> > > mat =. arr ,. arr2
> > >
> > >
> > > list =. 4 3
> > >
> > >
> > > I can evaluate individual cells thusly
> > >
> > >
> > >
> > >
> > > ((0{0{mat)`: 6) 4
> > >
> > >
> > > But would like a single expression that would yield the result, for
> example (input = 4):
> > >
> > >
> > > 16 2
> > > 8  54.5982
> > >
> > >
> > > I cannot seem to get an expression that works. To add slightly to the
> complexity, my actual problem involves an
> > > arbitrary nxn matrix.
> > >
> > >
> > > ----------------------------------------------------------------------
> > > 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

Reply via email to