Don’t know what to call it,
but it’s mighty unlak prose
|
In a standard APL system a function for an identity matrix of size y might be written as ∇ z←im y [1] z←(y,y)⍴(y+1)↑1 ∇ im 2 1 0 0 1 When many APL interpreters execute such a defined function, it must be parsed at least the first time, and reparsed each succeeding time it is executed. In J one may create the same function by applying the definition conjunction (:) to the literal list embodying the same definition.
IM=. 3 : '(y,y)$(1+y){.1'
IM 2
1 0
0 1
Here $ is reshape and {. is take, and y is the canonical name of the right, or only, argument. A J function may be written, as in APL, consisting of as many lines as necessary. The phrase 3 : '(y,y)$(1+y){.1' is the function desired, and need not be named. It can be applied directly to an argument (that is, used as a nonce function).
3 : '(y,y)$(1+y){.1' 3
1 0 0
0 1 0
0 0 1
|