cool. to do what I was going for,
(invoke"_1~ +:`-: $~ #) i. 3 3
0 2 4
1.5 2 2.5
12 14 16
in strand notation
lrS =: 'lrT {."1 v2a' aatrain
9: -: +: lrS
┌────┬────┐
│(-:)│(+:)│
└────┴────┘
(apply every~ 9: *: +: -: lrS $~ #) 3 2 5 4
9 4 2.5 16
----- Original Message -----
From: Raul Miller <[email protected]>
To: Programming forum <[email protected]>
Cc:
Sent: Saturday, August 8, 2015 11:39 PM
Subject: Re: [Jprogramming] a trick for monadic gerund and /
Another approach:
(apply each~ +:`-: $~ $) 4 2 3 0
┌─┬─┬─┬─┐
│8│1│6│0│
└─┴─┴─┴─┘
Except apply isn't quite right, since it's looking for a string
representing a verb and it's not always the case that the part of the
gerund inside the box is a string representing a verb.
So, perhaps better:
invoke=:4 :'x`:0 y'
(invoke"0~ +:`-: $~ $) 4 2 3 0
8 1 6 0
Good enough?
Thanks,
--
Raul
On Sat, Aug 8, 2015 at 8:12 PM, 'Pascal Jasmin' via Programming
<[email protected]> wrote:
> -`+/ will insert alternating - then + between items of argument. Those are
> dyadic verbs, and they have to be.
>
> Still the idea of applying monads to alternating items in a list must have
> occurred to others too. One technique is:
>
> ('+:';'-:') apply each 4 2
> ┌─┬─┐
> │8│1│
> └─┴─┘
>
> but this doesn't have the auto expansion that gerunds and / have. A solution
>
> (] ,~ -:@:[)`(] ,~ +:@:[)/ 3 4 2 0
> 1.5 8 1 0
>
>
> where the trailing 0 is a pad that doesn't get processed.
>
> With my version of strand notation and double adverbs at
> http://www.jsoftware.com/jwiki/PascalJasmin/functional%20algebra%20and%20double%20adverbs%20part%202
>
> This can be made into a clean adverb that adds its own pad, and then removes
> the pad after processing. (needs many definitions from that page). all one
> line.
>
> altMs =: 'lrT (''[: }: [:''&,)@:(,&''/ {:,~]'')@:(''`''&joinstring)@:(([:
> ''(] ,~''&, ,&''@:[)'' )each) @:( {."1) v2a eval' aatrain
>
> 9: -: +: altMs NB. 9: closes strand input
> [: }: [: (] ,~ -:@:[)`(] ,~ +:@:[)`:3 {: ,~ ]
>
>
> 9: -: +: altMs 3 4 5 6 NB. verbs get inserted left to right
> 1.5 8 2.5 12
>
>
> 9: -: +: *: altMs 3 4 5 6 7
> 1.5 8 25 3 14
>
>
> 9: *: (-: +: altMs) NB. expression in brackets is assignable adverb
> [: }: [: (] ,~ *:@:[)`(] ,~ -:@:[)`(] ,~ +:@:[)`:3 {: ,~ ]
> ----------------------------------------------------------------------
> 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