Skip to content
Marshall Lochbaum edited this page May 7, 2016 · 1 revision

File descriptions

These descriptions are scraped from the comments in files, with some manual polishing.

C files:

Name Description
a.c Adverbs
ab.c Adverbs: b. bitwise functions
af.c Adverbs: Fix
ai.c Adverbs: Inverse & Identity Functions
am.c Adverbs: Amend
am1.c Adverbs: a ind}z for sparse z & ind is box a0;a1;a2;... or integer
amn.c Adverbs: a ind}z where z is sparse and ind is <"1 integers
ao.c Adverbs: Oblique and Key
ap.c Adverbs: Prefix and Infix
ar.c Adverbs: Reduce (Insert) and Outer Product
as.c Adverbs: Suffix and Outfix
au.c Adverbs: Utilities
c.c Conjunctions
ca.c Conjunctions: Atop and Ampersand
cc.c Conjunctions: Cuts
cd.c Conjunctions: Differentiation and Integration
cf.c Conjunctions: Forks
cg.c Conjunctions: Gerunds ` and `:
ch.c Conjunctions: Hypergeometric Series
cip.c Conjunctions: Inner Product
cl.c Conjunctions: L: and S:
cp.c Conjunctions: Power Operator ^: and Associates
cpdtsp.c Conjunctions: Dyad +/ .* on Sparse Arguments
cr.c Conjunctions: Rank Associates
crs.c Conjunctions: Rank on Sparse Arrays
ct.c Conjunctions: Taylor's Series
cu.c Conjunctions: Under and Each
cv.c Conjunctions: Variants (!.)
cx.c Conjunctions: Explicit Definition : and Associates
d.c Debug: Error Signalling and Display
dc.c Debug: Function Call Information
dss.c Debug: Single Step
dstop.c Debug: Stops
dsusp.c Debug: Suspension
dtoa.c strtod for IEEE-, VAX-, and IBM-arithmetic machines.
f.c Format: ": Monad
f2.c Format: ": Dyad
i.c Initializations
io.c Input/Output
j.c Global Variables
jdlllic.c Private Jsoftware encode/decode routines - license keys and ijl
k.c Conversions Amongst Internal Types
m.c Memory Management
mbx.c Memory-Mapped Boxed Arrays
p.c Parsing; see APL Dictionary, pp. 12-13 & 38.
pv.c Parsing: Tacit Verb Translator (13 :)
px.c Execute and Associates
r.c Representations: Atomic, Boxed, and 5!:0
rl.c Representations: Linear and Paren
rt.c Representations: Tree
s.c Symbol Table
sc.c Symbol Table: Function Call (unquote)
sl.c Symbol Table: Locales
sn.c Symbol Table: Names
t.c Table of Primitive Symbols
u.c Interpreter Utilities
v.c Verbs
v0.c Verbs: Polynomial Roots & Polynomial Evaluation
v1.c Verbs: Match Associates
v2.c Verbs: Primes and Factoring
va1.c Verbs: Monadic Atomic
va2.c Verbs: Atomic (Scalar) Dyadic
va2s.c Verbs: Atomic (Scalar) Dyadic Verbs on Sparse Arrays
vamultsp.c Verbs: "Multiplication" on Sparse Arrays
vb.c Verbs: Boolean-Valued
vbang.c Verbs: !
vbit.c Verbs: Bit Type
vcant.c Verbs: Transpose
vcat.c Verbs: Catenate and Friends
vcatsp.c Verbs: ,. on Sparse Arguments of rank 2 or less
vchar.c Verbs: Character Functions u&(a.&i.) and u&.(a.&i.)
vcomp.c Verbs: Comparatives
vcompsc.c Verbs: Comparatives
vd.c Verbs: Domino
vdx.c Verbs: Extended Precision Floating Point
ve.c Verbs: Elementary Functions (Arithmetic, etc.)
vf.c Verbs: Fill-Dependent Verbs
vfft.c Verbs: Fast Fourier Transform and Friends
vfrom.c Verbs: From & Associates. See Hui, Some Uses of { and }, APL87.
vfromsp.c Verbs: { on sparse arguments
vg.c Verbs: Grades
vgauss.c Verbs: Gaussian Elimination
vgcomp.c Verbs: Grade -- Compare
vgranking.c Verbs: Grade -- monad /:@/:"r on dense arguments
vgsort.c Verbs: Grade -- dyad /: and \: where a==w
vgsp.c Verbs: Grades on Sparse Arrays
vi.c Verbs: Index-of
viix.c Verbs: Interval Index, mostly by Binary Search
visp.c Verbs: Index-of on Sparse Arrays
vm.c Verbs: "Mathematical" Functions (Irrational, Transcendental, etc.)
vo.c Verbs: Box & Open
vp.c Verbs: Permutations
vq.c Verbs: Rational Numbers
vrand.c Verbs: Random Numbers
vrep.c Verbs: a#"r w
vs.c Verbs: $. Sparse Arrays
vsb.c Verbs: s:
vt.c Verbs: Take and Drop
vu.c Unicode (2-byte unsigned characters)
vx.c Verbs: Extended Precision Integers
vz.c Verbs: Complex-Valued Scalar Functions
w.c Words: Word Formation
wc.c Words: Control Words
wn.c Words: Numeric Input Conversion
ws.c Words: Spelling
x.c Xenos aka Foreign: External, Experimental, & Extra
x15.c Xenos: DLL call driver
xa.c Xenos: Miscellaneous
xb.c Xenos: Binary Representation
xc.c Xenos: Custom
xcrc.c Xenos: CRC calculation
xd.c Xenos: file directory, attributes, & permission
xf.c Xenos: Files
xfmt.c Xenos: 8!:x formatting stuff
xh.c Xenos: Host Command Facilities
xi.c Xenos: Implementation Internals
xl.c Xenos: File Lock/Unlock
xo.c Xenos: File Open/Close
xs.c Xenos: Scripts
xt.c Xenos: time and space
xu.c Xenos: u: conversions

Source files

Files without a description are just headers for the corresponding c file.

Name Description
a.h Adverbs: Macros and Defined-Constants (for Adverbs and Conjunctions)
ar.h Adverbs: f/ defns
cip_t.h Template for ipbx (boolean inner products)
cr_t.h cr.c templates
d.h Debug
dtoa.h strtod for IEEE-, VAX-, and IBM-arithmetic machines.
j.h Global Definitions
ja.h Aliases for jt
jc.h Character Definitions
je.h Extern Declarations
jerr.h Error Codes
jlib.h Interface to the j library (dll or shared object)
js.h SYS_ and friends
jt.h Definitions for jt ("jthis")
jtype.h Type Definitions
jver.h Defines JVERSION
m.h Memory Management
p.h Parsing: Macros and Defined Constants
s.h For Symbol Tables aka Locales
va.h Verbs: Macros and Defined Constants for Atomic (Scalar) Verbs
vasm.h Verbs: Assembly Routines for Integer + * - with Overflow
vcomp.h Verbs: Comparatives
vdx.h Verbs: Extended Precision Floating Point
ve.h Atomic Verbs
vg.h Grades
vq.h Rational Numbers
vx.h Extended Precision
vz.h Complex Numbers
w.h Words
x.h Xenos: Macros and Defined Constants for !:

How to find the file you are looking for

The vast majority of J is taken up by defining builtin functions. To find where a builtin function is defined, check t.c, which is a table containing the C function corresponding to every J primitive. For instance, if we want to look at the code for monad i., we search for it in t.c and see the line:

 /*  i. */  pdef(CIOTA,   VERB, jtiota,    jtindexof,1,   RMAX,RMAX);

The rows are (Symbol name, part of speech, monad, dyad, monad rank, dyad rank 1, dyad rank 2).

Thus jtiota is the C function which performs monad i.. There are three parts in its definition:

  • An entry in je.h, extern F1(jtiota);, so that the function can be used in other files (in particular, t.h).
  • An entry in ja.h, #define iota(x) jtiota(jt,(x)) (some spaces omitted). jt is the structure containing J's state; it is passed between all functions. So that the programmer doesn't have to type jt a million times, these definitions are used for every function that has it as an argument.
  • The actual definition, in this case in v.c. What goes in this function will be described elsewhere.

Foreigns

Because the foreign conjunction has so many cases, its implementation is split across many files, each having a name that starts with x. The master function, which can be found with a look in t.c as usual, is jtforeign, in x.c. This function is itself essentially an extension of t.c, indexed by left and right argument rather than symbol. The rows and meaning are the same.

Clone this wiki locally