Two things:

0.  sometimes you want to apply the different verbs to unboxed operands, 
so the boxing should be optional;

1.  sometimes x and y are not the same type & so cannot be joined

eachunderv=: 2 : 0
   m v 1 :(':';'x`:6&.u y')"_1 y
:
   m v 1 :(':';'x`:6&.u&>/ y')"_1 x ,&<"_1 y
)
eachv =: eachunderv >

eachunderv has the same spec as my 'respectively', but looks neater.
I prefer `:6 to @.0, but it's a matter of taste.

Henry Rich


Sherlock, Ric wrote:
> The monadic form was incorrect. Here is a working version:
> eachv=: 1 : 0
>   m 4 :'[email protected]&.>y'"_1 y
> :
>   m 4 :'[email protected]&.>/y'"_1 x,.y
> )
> 
>    (<rnge) fns eachv data
> +--------------+--------------+--------------+-------------------+
> | 2  1  0 _1 _2| 1  2  3  4  5| 7  8  9 10 11| 3  1.5  1 0.75 0.6|
> |11 10  9  8  7| 5 10 15 20 25|23 24 25 26 27|12    6  4    3 2.4|
> |20 19 18 17 16| 9 18 27 36 45|39 40 41 42 43|21 10.5  7 5.25 4.2|
> |29 28 27 26 25|13 26 39 52 65|55 56 57 58 59|30   15 10  7.5   6|
> |38 37 36 35 34|17 34 51 68 85|71 72 73 74 75|39 19.5 13 9.75 7.8|
> +--------------+--------------+--------------+-------------------+
>    fns eachv data
> +--------+-------+-----------+-----------------------------+
> | 3  2  1|  0   1| 6  7  8  9|            _ 3           1.5|
> | 9  8  7| 10  15|26 27 28 29|            4 3           2.4|
> |15 14 13| 36  45|46 47 48 49|          3.5 3         2.625|
> |21 20 19| 78  91|66 67 68 69|3.33333333333 3 2.72727272727|
> |27 26 25|136 153|86 87 88 89|         3.25 3 2.78571428571|
> +--------+-------+-----------+-----------------------------+
>    
> 
>> From: Sherlock, Ric
>>
>> Ok here is an explicit adverb that builds on the idea:
>>
>> applyverbs=: 3 : ('[email protected]&.>y';':';'[email protected]&.>/y')"_1
>> eachv=: 1 : ('m applyverbs y';':';'m applyverbs x,.y')
>>
>>    (<rnge) fns eachv data
>> +--------------+--------------+--------------+-------------------+
>> | 2  1  0 _1 _2| 1  2  3  4  5| 7  8  9 10 11| 3  1.5  1 0.75 0.6|
>> |11 10  9  8  7| 5 10 15 20 25|23 24 25 26 27|12    6  4    3 2.4|
>> |20 19 18 17 16| 9 18 27 36 45|39 40 41 42 43|21 10.5  7 5.25 4.2|
>> |29 28 27 26 25|13 26 39 52 65|55 56 57 58 59|30   15 10  7.5   6|
>> |38 37 36 35 34|17 34 51 68 85|71 72 73 74 75|39 19.5 13 9.75 7.8|
>> +--------------+--------------+--------------+-------------------+
>>
>>    fns eachv data
>> +--------+---+-----------+--------+
>> | 0  1  2|0 1| 0  1  2  3| 0  1  2|
>> | 3  4  5|2 3| 4  5  6  7| 3  4  5|
>> | 6  7  8|4 5| 8  9 10 11| 6  7  8|
>> | 9 10 11|6 7|12 13 14 15| 9 10 11|
>> |12 13 14|8 9|16 17 18 19|12 13 14|
>> +--------+---+-----------+--------+
>>
>>> From: Sherlock, Ric
>>>
>>> For practical use I really like Henry/Martin's adverb approach, but
>>> like Victor haven't had any success trying to turn your idea into one
>>> that does the job.
>>>
>>>> From: Raul Miller
>>>>
>>>> On Wed, Aug 19, 2009 at 11:28 PM, Sherlock,
>>>> Ric wrote:
>>>>>   fns=: ((-~ +/)"1)`((*~ +/)"1)`((+~ +/)"1)`((%~ +/)"1)
>>>>>   rnge=. >: i. 5
>>>>>   ]data=. (i.5 3);(i.5 2);(i.5 4);(i.5 3)
>>>> ...
>>>>> Given the gerund "fns" (4 dyadic verbs) and the noun "data" (4
>>> arrays
>>>>> which are the desired arguments for the corresponding verbs in
>> the
>>>>> gerund), how can I apply the verbs to their respective arguments
>>>>> such that:
>>>>>
>>>>>   rnge applyVerbs data
>>>>> +-------------------+--------------+--------------+--------------
>> +
>>>>> | 3  1.5  1 0.75 0.6| 7  8  9 10 11| 1  2  3  4  5| 2  1  0 _1
>> _2|
>>>>> |12    6  4    3 2.4|23 24 25 26 27| 5 10 15 20 25|11 10  9  8
>>  7|
>>>>> |21 10.5  7 5.25 4.2|39 40 41 42 43| 9 18 27 36 45|20 19 18 17
>> 16|
>>>>> |30   15 10  7.5   6|55 56 57 58 59|13 26 39 52 65|29 28 27 26
>> 25|
>>>>> |39 19.5 13 9.75 7.8|71 72 73 74 75|17 34 51 68 85|38 37 36 35
>> 34|
>>>>> +-------------------+--------------+--------------+--------------
>> +
>>>>    |.fns 4 :'[email protected]&.>/y'"_1 (<rnge),. data
>>>> +-------------------+--------------+--------------+--------------+
>>>> | 3  1.5  1 0.75 0.6| 7  8  9 10 11| 1  2  3  4  5| 2  1  0 _1 _2|
>>>> |12    6  4    3 2.4|23 24 25 26 27| 5 10 15 20 25|11 10  9  8  7|
>>>> |21 10.5  7 5.25 4.2|39 40 41 42 43| 9 18 27 36 45|20 19 18 17 16|
>>>> |30   15 10  7.5   6|55 56 57 58 59|13 26 39 52 65|29 28 27 26 25|
>>>> |39 19.5 13 9.75 7.8|71 72 73 74 75|17 34 51 68 85|38 37 36 35 34|
>>>> +-------------------+--------------+--------------+--------------+
>>> ---------------------------------------------------------------------
>> -
>>> 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