Session 1

You will need to learn:
--Basic statement syntax
--Script storage and recall
--One-line program definition
--Multi-line program definition

You should profit greatly from understanding:
--Storage in multi-dimensional arrays
--Viewing arrays and subarrays from different transpositions
--Selection of subarrays of related data
--Restructuring arrays with additional input or results

You should survey the range of available tools:
--Logical (relational), arithmetic, structural operations
--Scripts assisting particular application areas
--Scripts exploiting particular input and output capabilities
--"Foreign" verbs for system interactions

You may explore more advanced capabilities:
--Using boxed-array values to obtain more complex structures
--Using structural adverbs to apply operations in special ways
--Using conjunctions and adverbs to create new operations
--Using verb (operation) trains to create new operations
--Using cartesian and polar complex values
--Using polynomial, series-expansion, differential, integral verbs

Syntax:
--J is based on mathematical notation, precise and concise
--Rules are revamped for uniformity and maximal applicability

		Traditional						J
	   5 x - 2 + 7					   5 * - 2 + 7
	-3							_45
	   (5 x (- 2)) + 7				   5 * (- (2 + 7))
	-3							_45
								   7 + 5 * _2
								_3

--Many operation-precedence rules are abandoned
--Sign for negative numbers is distinguished as "low minus"
--Blanks between symbols are often unnecessary but aid reading
--Parentheses group expressions for precedence or clarity 

--Plain Equal-sign is only a test of relationship
	   x=: 3
	   x
	3
	   x = 3						   x = 5
	1							0
	   x=: 1 4 7
	   x = 4						   x = 9 8 7
	0 1 0						0 0 1

--Numerical list (vector) needs no non-blank separators or brackets
--When feasible, operations apply to all elements of an array
	   x=: 'This is a test.'
	   x = 't'
	0 0 0 0 0 0 0 0 0 0 1 0 0 1 0
--Character list (string) accepts no separators, has apostrophe brackets

--Data-structuring operations are put into the same syntax
	   x=: i. 6					   y=: 2 4 $ 'abcde'
	   x							   y
	0 1 2 3 4 5					abcd	
								eabc
	   $ x						   $ y
	6							2 4
	   $ $ x						   $ $ y
	1							2
	   }. 2 4 $ 'abcde'
	eabc
--ShapeOf (measuring) and (Re-)Shape (arraying) are fundamental
--ShapeOf ShapeOf measures rank (dimensionality)
--Counting always begins with zero ("0-origin")

--Arrays may be appended along different axes
	   x , x						   y , y
	0 1 2 3 4 5 0 1 2 3 4 5			abcd	
								eabc
								abcd	
								eabc
	   x ,. x						   x ,: x
	0 0							0 1 2 3 4 5
	1 1							0 1 2 3 4 5
	2 2
	3 3
	4 4
	5 5
--The default direction for Append is the major axis (axis 0)
--Components of rank one lower are "items" arrayed along major axis
--Stitch or Link converts list if necessary to column or row table

--Rank modifier can specify rank of sub-units to be treated
	   y ,"2 'z'					   y ,"1 'z'
	abcd							abcdz
	eabc							eabcz
	zzzz
	   x ,"0 (7)					   x (,"0) 7
	0 7							0 7
	1 7							1 7
	2 7							2 7
	3 7							3 7
	4 7							4 7
	5 7							5 7
	   y ,"1 1 'wx'				   y ,"1 0 'wx'
	abcdwx							abcdw
	eabcwx							eabcx
--Results from specified-rank "cells" are filled in similar "frame"
--One argument's frame shape must be a prefix of the other's
--A conjunction forms a modified verb