Differences between revisions 8 and 9
 ⇤ ← Revision 8 as of 2008-08-05 05:02:09 → Size: 2135 Editor: RicSherlock Comment: upate syntax ← Revision 9 as of 2008-12-08 10:45:31 → ⇥ Size: 2135 Editor: anonymous Comment: converted to 1.6 markup Deletions are marked like this. Additions are marked like this. Line 1: Line 1: [[TableOfContents]] <>

### Creating an Empty List

```NB. y is anything; result is a list of 0 items, each like y
noneof =: (\$0)&(]"0 _)```

### Culling

Given an array and a predicate, keep only those items for which the predicate is true

```NB. Adverb.  If [x] u y is 1, keep that element of y
usedtocull =: 1 : 'u # ]'```

### Substring

```NB. x is (starting position,length), y is list
NB. result is the selected portion
substr =: (];.0~ ,.)~"1 _```

### Open a Column

`ocol =: >@:({"1)`

### Select Leading or Trailing Elements, but Not Running Off the End

```NB. like {., but limited to the length of y
leading =: ((<. #) {. ])"0 _
NB. like - ux_vy {., but limited to the length of y
trailing =: (-@(<. #) {. ])"0 _```

### Insert Inside Multilevel Boxed Array

m gives the path, like that used by {::. x is put inside the box at that position in the path.

```NB. Adverb.  Install x in the path given by m
store =: 1 : 0
:
if. #m do. (< x (}.m)store ({.m){::y) ({.m)} y else. x end.
)```

### Apply Verbs on Selected Items

The onitem conjunctions apply u to the cells of y selected my n . There are bivalent, monadic, and dyadic forms.

```NB. Conjunction.  u is verb, n (or [x] v y) is arg to { to select s = desired portion of y
NB. The result of x u s (if dyad) or u s (if monad) replaces s
onitem =: 2 : '(u bivalent (n&{)) n} ]'
onitemm =: 2 : 'n}~ u@:(n&{)'
onitemd =: 2 : '(u (n&{)) n} ]'```

applyintree applies u at the cell whose path is n .

```NB. Conjunction.  Apply u at the cell indicated by n
applyintree =: 2 : 0
if. #n do. ((u applyintree (}.n)) L:_1 ({.n){y) ({.n)} y else. u y end.
:
NB. The rank is s,0 where s is the surplus of x-rank over y-rank.  This causes
NB. the cells of y to be matched up with the largest appropriate blocks x  This
NB. is necessary because it is impossible to change the shape of the values being modified
if. #n do. (x u applyintree (}.n) L:_ _1"(0 (,~ >.) x -&(#@\$) a) (a =. ({.n){y)) ({.n)} y else. x u y end.
)```

Phrases/Selection (last edited 2008-12-08 10:45:31 by anonymous)