PLANS:	These plans are tentative, and there is no asociated timetable.

	v1.0: Release

	v1.1: Dynamic linking

	v1.2; Dynamic linking libraries

	v1.3: Function compiler.

TODO:	more()

	scanf()

	Contributors form...

	Dynamic Linking

	are()

	Make the data stack into a stack-of-stacks, use existing
	checks in pop() and push() to jump between stacks.

	plcont        contour plot
*	plptex        write text at specific location
*	plsori(m)     m=0:landscape mode; m=1: portrait mode
*	plfontld(n)   load font.  n=0: standard font, n=1: better font
*	plfont(n)     select font. n=1 simple, =2 roman, =3 italic, =4 script
*	plwid(w)      set line width to w

FINISH:	eigsens, signm, frank, matsignt

ADD:

	Solve, factor etc, need to recognize symmetric inputs, and do
	something better, maybe chol...

	Write btree_node_delete();

	Binary file format for read(), write()?

	Make scanner read from a character string, then make eval read
	directly from string, and create meval() which will evaluate
	string matrices.
	
	error tracebacks (shouldn't be too hard if we use the current
	frame-stack to get our error information).

	Builtin ode (?).

	bessel()

	Make using system() easier. Some kind of simpler syntax. `!'
	is already used for `!='.

	rlib/tanh.r -> instead of calling sinh() and cosh(), you should
	expand it to (exp(x) - 1/exp(x) ./ (exp(x) + 1/exp(x)), as this would
	reduce the number of exponentials calculated. You could also use the
	exp(-x) = 1/exp(x) trick in cosh.r and sinh.r.

Start thinking about:

	Dynamic Linking.

	Consider a more elaborate help-file searching scheme. One that
	could find the help file `IF' with a `help if'.

	ReDo if, for, while, use jmps instead.

	Interactive debugging (single step capability)

	Sparse matrices (?, a real maybe)

	Consider labels, and regular expression matching in strings.
	Also more elaborate find(), maybe an expression ? 

	Make [fps]rintf() recognize %m (matrix)
