Index Of: Difference between revisions
From NARS2000
Jump to navigationJump to search
No edit summary |
No edit summary |
||
Line 13: | Line 13: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td><apll>L</apll> is an array of rank | <td><apll>L</apll> is an array of rank not equal 1.</td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
Line 22: | Line 22: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>This feature extends dyadic iota to | <td>This feature extends dyadic iota to non-vector left arguments.</td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>This function is sensitive to <apll>⎕IO</apll>.</td> | <td>This function is sensitive to <apll>⎕IO</apll> and <apll>⎕CT</apll>.</td> | ||
</tr> | </tr> | ||
</table> | </table> | ||
Line 31: | Line 31: | ||
<p>For example, in origin-1</p> | <p>For example, in origin-1</p> | ||
<apll> M←2 3⍴'abcdef' | <apll> M←2 3⍴'abcdef'<br /> | ||
M⍳'afg'<br /> | |||
1 1 2 3 3 4<br > | |||
M[M⍳'af']<br /> | |||
<apll> | af<br /> | ||
L←2 ⋄ ⎕fmt L⍳⍳3<br /> | |||
┌3──────────┐<br /> | |||
│┌0┐ ┌0┐ ┌0┐│<br /> | |||
││0│ │0│ │0││<br /> | |||
│└~┘ └~┘ └~┘2<br /> | |||
└∊──────────┘</apll> | |||
<p>Note that this extension preserves the identity <apll>R≡L[L⍳R]</apll> for all <apll>R⊆L</apll>.</p> | |||
<p>This extension is implemented via an internal magic function:</p> | <p>This extension is implemented via an internal magic function:</p> |
Revision as of 12:07, 13 June 2013
|
||||
L is an array of rank not equal 1. | ||||
R is an arbitrary array. | ||||
Z is a nested array of shape ⍴R whose items are each integer vectors of length ⍴⍴L, suitable for use as indices to L, except for where the item in R is not found in L, in which case the corresponding item in Z is ⎕IO+⍴L. | ||||
This feature extends dyadic iota to non-vector left arguments. | ||||
This function is sensitive to ⎕IO and ⎕CT. |
For example, in origin-1
M←2 3⍴'abcdef'
M⍳'afg'
1 1 2 3 3 4
M[M⍳'af']
af
L←2 ⋄ ⎕fmt L⍳⍳3
┌3──────────┐
│┌0┐ ┌0┐ ┌0┐│
││0│ │0│ │0││
│└~┘ └~┘ └~┘2
└∊──────────┘
Note that this extension preserves the identity R≡L[L⍳R] for all R⊆L.
This extension is implemented via an internal magic function:
∇ Z←L #DydIota R;⎕IO;O
[1] O←⎕IO ⋄ ⎕IO←0
[2] Z←⊂[0] O+(1+⍴L)⊤(¯1↓,(1+⍴L)↑L)⍳R
∇