1. jndx is a 3 verb train (a fork).  It is used as a dyad. and could be 
rewritten as:
f=: (0 , [EMAIL PROTECTED]) 
r=: #: 
k=: [: I.@,  =/

x (f r k) y is (x f y) r x k y

The [: in the k part of jndx just stops the train rules from being applied to 
the right of it.  The entirety of the phrase "capped" can still be part of 
further trains.

2.  Adverbs and conjunctions can definitely be used as way to get extra 
parameters into your functions.  nouns can be parameters to adverbs and 
conjunctions too.  The join adverb definition looks similar to how a verb would 
be defined.  There is just an extra m parameter.  It can be an "easy way" to 
get extra parameters, especially control info, but another alternative would 
have been to pack A and 4 control bits into 2 high level boxes, and then unpack 
them inside a dyad definition.  The packing and unpacking would feel annoying 
and unnatural to most people.


----- Original Message ----
From: Yuvaraj Athur Raghuvir <[EMAIL PROTECTED]>
To: Programming forum <[email protected]>
Sent: Tuesday, October 24, 2006 5:36:40 AM
Subject: Re: [Jprogramming] Re: Using position-match array to generate result - 
eliminate the for loop

Oleg, thanks for the solution.

There are some points I donot understand in your solution. Could you
explain them to me?

1) I am not able to understand how the jndx works. Once the
position-match matrix is determined using =/, how are you compressing
it into positions of the tables using the various operators? I tried,
but got confused :(

2) The modeling of join as a adverb puzzles me as well. In general, is
it true that if the verb needs parameters, the implication is to use
an adverb?

Thanks,
Yuva



On 10/23/06, Oleg Kobchenko <[EMAIL PROTECTED]> wrote:
> To define a relational join, there need to be
> an agreement on what columns are matched,
> and what are selected.
>
> Suppose, A and B are lists of tupples with attributes
> in columns.
>   A (ia;ib;sa;sb) join B
> will return list of tuples, where column ia of A
> matches ib of B, with attributes sa from A and sb from B.
>
> jndx=: (0 , [EMAIL PROTECTED]) #: [: I.@,  =/       NB. join indices
>
> join=: 1 : 0                NB. A (ia;ib;sa;sb) join B
> :
>  'ia ib sa sb'=. m
>  'ja jb'=. |:(ia {"1 x) jndx ib {"1 y
>  (sa {"1 ja { x) ,. sb {"1 jb { y
> )
>
> Examples
>
>   A=. 1 101,2 102,3 103,:5 104
>   B=. 1 201,3 202,1 203,2 204,4 205,:3 206
>   A;B
> +-----+-----+
> |1 101|1 201|
> |2 102|3 202|
> |3 103|1 203|
> |5 104|2 204|
> |     |4 205|
> |     |3 206|
> +-----+-----+
>   A 0 0 1 1 join B
> 101 201
> 101 203
> 102 204
> 103 202
> 103 206
>
>
>   X =. 15 3 $ 12 | 45 ?. 200
>   Y =. 10 4 $ 12 | 40 ?. 60
>   X;Y
> +--------+----------+
> | 2  6  7| 6 11 1 10|
> | 7  6  5|10  8 8  1|
> | 8  6  0| 5 11 8  8|
> | 4  2  4| 2  0 1  5|
> | 9  4  9|10 11 4  3|
> | 8 10  5| 7  7 0  5|
> | 6 11  7| 0  0 9  3|
> | 7 10  5|10  4 3  7|
> | 4 11  3| 4  9 5  8|
> | 2  1  9| 7  1 3  3|
> | 9  2  4|          |
> |11  8  6|          |
> |11  0  1|          |
> | 0  5 10|          |
> | 5 10 11|          |
> +--------+----------+
>   X (0;0;0 1 2;0 1 2 3) join Y
> 2  6  7 2  0 1  5
> 7  6  5 7  7 0  5
> 7  6  5 7  1 3  3
> 4  2  4 4  9 5  8
> 6 11  7 6 11 1 10
> 7 10  5 7  7 0  5
> 7 10  5 7  1 3  3
> 4 11  3 4  9 5  8
> 2  1  9 2  0 1  5
> 0  5 10 0  0 9  3
> 5 10 11 5 11 8  8
>
>
----------------------------------------------------------------------
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