home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.uni-stuttgart.de/pub/systems/acorn/
/
Acorn.tar
/
Acorn
/
acornet
/
dev
/
j.spk
/
!J
/
Docs
/
Status
< prev
Wrap
Text File
|
1991-10-25
|
27KB
|
780 lines
Copyright (c) 1989 1990, Roger K.W. Hui & K.E. Iverson
Copyright (c) 1990 1991, Iverson Software Inc.
All Rights Reserved.
J Implementation Status (Version 3.4)
Roger Hui
1991 7 15
NYA means not yet available
Verbs:
= self-classify equal
< box less than
<. floor lesser of (min)
<: decrement less or equal
> open larger than
>. ceiling larger of (max)
>: increment larger or equal
_: NYA infinity NYA infinity
+ conjugate plus
+. or/gcd
+: double nor
* signum times
*. and/lcm
*: square nand
- negate minus
-. not less
-: halve match
% reciprocal divide
%. matrix inverse matrix divide
%: square root root
^ exponential power
^. natural log log
$ shape of shape
~. nub
~: nub sieve not equal
| magnitude residue
|. reverse (shift) rotate (shift)
|: transpose transpose
, ravel append
,. ravel items append items
,: itemize laminate
; raze link
;: words
# tally copy
#. base-2 value base
#: binary rep. anti-base
! factorial out of
/: grade up sort up
\: grade down sort down
[ same left
] same right
{ catalog from
{. head take
}. behead drop
". do (execute) do left if error (cond. execute)
": format format
? roll deal
A. atomic rep. atom permute
c. NYA characteristic NYA characteristic
C. permute/cycle permute
e. raze in in
E. NYA search
i. integers index of
o. pi times circle
p. NYA polynomial NYA polynomial
0: zero zero
1: one one
Adverbs:
m~ evoke evoke
v~ both cross
v/ insert table
v/. oblique key
v\ prefix infix
v\. suffix outfix
m} merge merge
v} merge merge
b. boolean boolean
f. fix fix
Conjunctions:
u^:n power chain
u^:v power chain
u .v determinant inner product
m : n defn defn
m : 1 adverb
m : 2 conjunction
m : 11 tacit tacit
m : v defn defn
u : n defn defn
u : v defn defn
u :.v obverse obverse
v;.n cut cut (NYA: v;.3 and v;._3)
u!.n fit fit
m!:n foreign foreign
[. lev lev
]. dex dex
m"n rank rank
m"v rank rank
u"n rank rank
u"v rank rank
u`v gerund
g`:0 append append
g`:1 until until
g`:3 insert
g`:4 recursion
g`:5 selection
u@v atop atop
g@.v agenda agenda
u@:v at at
n&v with
u&n with
u&v compose compose
u&.v under under
u&:n appose appose
Phrasal Forms:
(u v) hook
(u v w) fork
n c adverb
v c adverb
c n adverb
c v adverb
Nouns:
a. alphabet
_ NYA infinity
__ NYA negative infinity
_. NYA indeterminate
Pronouns:
$. suite
$: self reference
x. first argument
y. second argument
xyz) label
xyz: given names
Copulae:
name=.value local assignment
name=:value global assignment
noun=.value indirect local assignment
noun=:value indirect global assignment
System Limits:
Array rank <: 127
Comparison tolerance <: 2^_34
Object size < 65536 bytes [PC only]
Workspace size < 640 Kbytes [PC only]
The !: Conjunction:
The !: conjunction currently takes integer scalar left and right
arguments, and derives verbs. (One exception: 5!:0 is an adverb.)
These verbs behave like other verbs; in particular, they have intrinsic
ranks, may be assigned names, and may serve as arguments to adverbs and
conjunctions. Where these verbs take names as arguments (file names,
WS names, or object names), the names are always boxed, and the verb
rank is 0.
As with all other verbs, verbs derived from !: requires one or two
arguments. Some verbs have no "natural" arguments, but an argument
must nevertheless be supplied (and will be ignored in execution).
For example,
timestamp =. 6!:0
6!:0 ''
1991 6 6 10 50 23
0!:0 Host System Command
The string argument is forwarded to the host system for
execution, and the result is returned as a string with
embedded new-lines. For example: 0!:0 'dir *.exe'
0!:1 Spawn
0!:1 forwards its string argument to the host system for
execution, like 0!:0, but the output (if any) is ignored.
For example, 0!:1 can be used to invoke the vi editor
on UNIX systems.
1!:0 Directory NYA
1!:1 File Read
The argument is a boxed file name; the result is a string
of the file contents. For example, 1!:1 <'dir\subdir\file.ext'
The file name follows the conventions of the host system.
The argument may also be the integer 1, meaning read from
the keyboard.
1!:2 File Write
xyz 1!:2 <':folder1:folder2:file' writes string xyz to the
specified file. The right argument may also be the integer 2,
meaning write to the screen.
1!:3 File Append
string 1!:3 <'disk:folder1:folder2:file'
1!:4 File Size
1!:4 'dir/file1';'file2';'phile3'
1!:11 Indexed File Read
The argument is a 2-element list of boxes: a file name and
a 2-element integer list of the index and length. For example,
1!:11 'test';5 20 reads 20 bytes from file "test", starting
from position 5. The index may be negative (the last byte of
the file is index _1). The length may be elided, whence the
file is read from the index to the end of the file.
1!:12 Indexed File Write
The right argument is a 2-element list of boxes: a file name
and an integer index. For example, xyz 1!:12 'test';14
writes (string) xyz to file "test", starting at position 14.
The index may be negative (the last byte of the file is index
_1). The positions to be written must already exist in the
file (and the file must already exist).
1!:55 File Erase
1!:55 <'careful'
2!:0 WS Name Class
The integer result is the name class (see 4!:0) of the object
named in the boxed left argument, in the workspace named in
the boxed right argument. In the following example, the
result of the last sentence is 2 3 4.
wsnc =. 2!:0
save =. 2!:2
noun =. i.3 4
adv =. /
save <'wsname'
('noun'; 'save'; 'adv') wsnc <'wsname'
2!:1 WS Name List
The sorted list of all names in the workspace named in the
boxed right argument.
2!:2 WS Save
Monad. Save all global definitions into the workspace named
in the boxed right argument. The workspace is created if it
does not already exist (and is overwritten if it already
exists).
Dyad. Save the global definition of the object named in the
boxed left argument into the workspace named in the boxed
right argument. If the object already exists in the saved
workspace, it is overwritten; other objects in the saved
workspace are unaltered. The workspace is created if
it does not already exist.
Workspaces are currently in WSIS format (see 5!:3), but may
use a different format in future J versions. The workspace name
follows the file naming rules of the host system, and it'd be a
good idea to devise your own naming convention to distinguish
workspaces from other files.
2!:3 WS PSave NYA
"Protective" Save: like Save, but the monad does not modify
an existing workspace, and the dyad does not overwrite objects
already in the saved workspace.
2!:4 WS Copy
Copy the object named in the boxed left argument from the
saved workspace named in the boxed right argument, and define
it as a global object. If the left argument is elided, all
objects in the saved workspace are copied.
Like all verbs, Copy applies to the argument cells in random
order, so that if an object is copied from more than one
workspace, the definition of the object could be from any of
the workspaces.
2!:5 WS PCopy
"Protective" Copy: like Copy, but does not overwrite objects
already defined.
2!:55 WS Erase
Erase the object named in the boxed left argument, from the
workspace named in the boxed right argument.
3!:0 Internal Type
The internal "type" of a noun, where
1 boolean
2 literal
4 integer
8 floating point
16 complex
32 boxed
3!:1 Convert to Internal Representation
A string of the internal representation of a noun. The result
is machine-dependent and may change in future J versions.
3!:2 Convert from Internal Representation
Inverse of 3!:1, but nouns of type "boxed" will not be created.
4!:0 Name Class
The argument is a boxed name; the result is its class:
0 undefined, but valid name
1 (not used)
2 noun
3 verb
4 adverb
5 conjunction
6 other
4!:1 Name List
The argument is a subset of the integers from 2 to 5
(see 4!:0). The result is a list of boxed names belonging to
the class(es) specified in the argument. The optional left
argument are initial letters of the names of interest.
4!:55 Erase
The object named in the boxed argument is erased.
5!:0 Fix
5!:0 is an adverb which defines an object from its atomic,
display, or string representations. For example,
fx =. 5!:0
ar =. 5!:1
((ar <'a') fx) -: a =. i. 3 4
1
plus =. +
$$ ar <'plus'
0
2 ((ar <'plus') fx) 4 5
6 7
If the argument is a boxed list of boxes, it is assumed to be
an atomic representation (a result of 5!:1).
NYA If the argument is a list of boxes, it is assumed to be a
display representation (a result of 5!:2).
If the argument is a string, it is assumed to be a catenation
of string representations (results of 5!:3). The objects are
defined, names embedded in the representation are assigned
as a side effect, and the result of 5!:0 is the last
represented object.
5!:1 Atomic Representation
The argument is a boxed name; the result is a boxed list of
two boxes uniquely representing the named object:
noun: id value
verb: id operator arguments
adverb: id operator arguments
conjunction: id operator arguments
If an object is uniquely identified by the id alone (for example
"a." or "+" or "/."), then the second field is elided, and the
atomic representation is the id alone.
Gerunds (results of the ` conjunction) are arrays of atomic
representations. 5!:0 defines an object from its atomic
representation. Atomic representations are sometimes called
"canonical" or "boxed" representations.
5!:2 Display Representation
The argument is a boxed name; the result is the display
representation of the named object. 5!:0 defines an object
from its display representation. (Different objects can have
the same display representation, so 5!:0 is only a partial
inverse.)
f =. +/ . *
f
+-----+-+-+
|+-+-+|.|*|
||+|/|| | |
|+-+-+| | |
+-----+-+-+
each =. &. >
(5!:2 <'f') -: (, each '+/') ; each '.*'
1
5!:3 String Representation
The argument is a boxed name; the result is a string of the
WSIS (Workspace Interchange Standard) representation of the
named object. (See APL Quote-Quad, 1977 12; and SATN 22,
IPSA.) 5!:0 defines an object from its string representation.
The result of 5!:3 is a string, the catenation of the
following parts:
length Digits representing the length of the string
representation (excluding the length itself).
type One or two letters denoting the type of object
c literal (character) array
n numeric array
xb boxed array
xv verb
xa adverb
xc conjunction
The string representation of a verb, adverb, or
conjunction is the string representation of its
opened atomic representation (the open of the
result computed by 5!:0).
name The name of the object, or "-" if anonymous.
blank A single blank.
rank Digits representing the rank.
blank A single blank.
shape Digits and blanks representing the shape. Each
number in the shape is terminated by a blank.
elements The ravelled elements. For a character or numeric
array, this is the display form of the ravelled
array; for a boxed array (hence for a verb, adverb,
or conjunction), the elements themselves are
recursively string representations. 5!:3 is subject
to the fit conjunction &:, i.e. 5!:3&:d has d digits
in the computed display form.
With the possible exception of elements of literal arrays, the
string representation contains only ASCII characters in the
range 32 to 126 inclusive.
6!:0 Time-Stamp
The current time as a 6-element list: year, month, day, hour,
minute, and second (including any fraction thereof).
6!:1 Time since session start
6!:2 Time required to execute an expression
6!:2 '+/i.100'
6!:3 Delay
(6!:3) 60 [ 'sleep for a minute'
7!:0 Space currently in use
7!:1 Space used since session start
7!:2 Space required to execute an expression
8!:0 (PC only) Query CGA mode
(8!:0 ''){'non-CGA mode'; 'CGA mode'
8!:1 (PC only) Set CGA mode
(8!:1) 0 [ 'set non-CGA mode'
(8!:1) 1 [ 'set CGA mode'
8!:4 (PC only) Query screen attributes
8!:5 (PC only) Set screen attributes
The argument is a 4 by 2 matrix of integer values between 0 to
15 inclusive. Attribute values conform to DOS conventions.
.---------------------------.
| input area | input area |
| background | foreground |
|-------------+-------------|
| output area | output area |
| background | foreground |
|-------------+-------------|
| cursor bar | cursor bar |
| background | foreground |
|-------------+-------------|
| status line | status line |
| background | foreground |
|_____________|_____________|
8!:7 (PC only) Refresh screen
Redisplay the contents of the screen.
8!:9 (PC only) Edit
8!:9 y invokes the editor on y, a string with lines delimited
by linefeeds (10{a.). Press F1 to get meanings of function keys.
8!:16 (Macintosh only) Query font attributes
8!:17 (Macintosh only) Set font attributes
Font attributes are a 3-element integer list of the font number,
style, and size. "Style" is the sum of one or more of the following
integers, where
1 Bold
2 Italic
4 Underline
8 Outline
Font attributes can also be set by the font dialog box, invoked
by the "Font ..." item under the "Edit" menu.
8!:19 (Macintosh only) Print screen
9!:0 Query random link
9!:1 Set random link. Default: 16807
9!:4 Query prompt
9!:5 Set prompt. Default: ' '
9!:6 Query box drawing characters
9!:7 Set box drawing characters
The argument is an 11-element string of nw,ts,ne, te,cr,tw,
sw,tn,se, ns,ew (northwest corner, tee south, northeast
corner; tee east, etc.) Defaults:
[PC ] 218 194 191 195 197 180 192 193 217 179 196 { a.
[Others] '+++++++++|-'
9!:8 Query error messages
9!:9 Set error messages
For example: Replace English messages (default) with
French ones.
9!:10 Query ) system command names
9!:11 Set ) system command names
For example: Replace English command names (default) with
French ones. Only the first 4 characters of each name
are significant.
128!:0 QR decomposition
The QR decomposition of a complex matrix in the domain of %. .
The result is an Hermitian matrix and a square upper triangular
matrix, individually boxed.
128!:1 Invert a square upper triangular matrix
System Commands:
)off Terminate session
)si NYA
)sic NYA
)script Script
)sscript Silent Script
)script and )sscript accept an input file name and an optional output
file name. File names must be in quotes. A dash (-) for the input file
name means "standard input", i.e. the keyboard. The input file consists
of lines of APL sentences and other input lines, and is known as a
"script". The output file is suitable for subsequent use as a script.
System commands in scripts are ignored. )script differs from )sscript
in that it outputs to the "standard output" (the screen) as well as to
any output file. Examples:
)script - 'sesslog'
Input obtained from the keyboard; output appended to file "sesslog"
and to the screen.
)sscript '\jscripts\asdf'
Input from file "\jscripts\asdf"; no output. Input reverts to the
keyboard at the end of "\jscripts\asdf".
)sscript 'disk:folder:subfolder:inf' 'outf'
Input obtained from "disk:folder:subfolder:inf"; output appended
to "outf".
)script -
Default.
If there is a file named "profile.js" in the current directory, J will
automatically execute )script 'profile.js' at the start of a session.
Command Line Parameter:
(PC only) The command line parameter /s specifies standard input and
standard output, without the session manager supplied with J. i.e.
DOS command Effect
j has session manager
j /s standard i/o, no session manager
Machines:
AT&T 3B1
Apple Macintosh
Atari ST
DEC VAX (Ultrix and BSD UNIX)
Interactive 386/ix
IBM PC family: PC, XT, AT, 286, 386
IBM RISC/6000
MIPS R3000
NeXT
Philips P9070
Silicon Graphics SGI Irix
Sun 3
Sun 386i
Sun 4 (SPARC)
Changes between Version 2, 1990 8 9 (APL90 Version)
and Version 2.7, 1990 10 22
J code size reduced slightly
alternatives for national use characters
= faster monad
-. faster dyad
~. faster
~: faster monad
,. faster
;: rhematic rules re . and : changed
e. faster
i. faster dyad
. cum (gerund from verb)
: con (verb from gerund)
:: faster
u"v rank (like u, but has ranks of v)
u&.v under
=. indirect local assignment
=: indirect global assignment
3!:2 convert from internal representation
5!:0 fix
5!:1 atomic representation
8!:0 8!:1 query/set CGA mode
9!:0 9!:1 query/set random link
9!:4 9!:5 query/set prompt
9!:6 9!:7 query/set box drawing chars
9!:8 9!:9 query/set error msgs
9!:10 9!:11 query/set ) system command names
)box removed
)prompt removed
)reset renamed )sic
)rl removed
)script profile facility added
ATARI ST ported to
tutorial faster
Changes in Version 2.8, 1990 11 15
": faster on boxed arrays
display faster on boxed arrays
5!:0 string representation inverse
5!:3 string representation
8!:2 8!:3 removed (replaced by DOS facility)
8!:4 8!:5 set screen attributes
8!:7 refresh screen
)clear removed (equivalent to 4!:55 (4!:1) 2 3 4 5 )
PC simplified session manager
PC added command line parameter /s
Changes in Version 2.9, 1991 2 15
+: monad added
*: monad added
-: monad added
": dyad added
0: added
1: added
m&g f&n faster
:: labels
adverbs n c, v c, c n, c v derive adverbs
2!:0 WS name class
2!:1 WS name list
2!:2 WS save
2!:4 WS copy
2!:55 WS erase
8!:9 (PC) Edit
8!:16 8!:17 (Mac) query/set font attributes
8!:19 (Mac) print screen
Macintosh improved user interface
PC improved user interface
386ix ported to
SGI ported to
Changes in Version 3, 1991 3 17
[ previously spelt }:
] previously spelt {:
. previously spelt ..
` previously spelt .
`: previously spelt :
: previously spelt ::
+/\ invertible
-/\ invertible
*/\ invertible
%/\ invertible
=/\ invertible
~:/\ invertible
+/\. invertible
-/\. invertible
*/\. invertible
%/\. invertible
=/\. invertible
~:/\. invertible
^~ invertible
,~ invertible
;~ invertible
,:~ invertible
|:&:k shift
b. boolean
m. mean
n. normalize
s. standard deviation
xyz: given names
tab treated like space on input
Mac resizeable Language Summary
Changes in Version 3.1, 1991 5 17
LinkJ
m : 1 replaces 1 : m
m : 2 replaces 2 : m
m : 11 translate to tacit
1!:11 indexed file read
1!:12 indexed file write
m. redefined
n. redefined
s. redefined
u . v determinant
Changes in Version 3.2, 1991 6 2
A. previously spelt @:
C. previously spelt @.
!. previously spelt &:
,. ravel items / append lists
; raze / link
@. agenda
@: at
&: appose
f. fix
[. lev
]. dex
m. removed
n. removed
s. removed
proverbs dynamic reference
0!:1 documentation updated
Changes in Version 3.3, 1991 6 25
,. ravel items / append items
0-frames corrected
a-trains implemented
c-trains implemented
PC help screens updated
Changes in Version 3.4, 1991 7 15
NB. implemented
National Use implemented (Appendix A of dictionary)