function/al	in-type			out-type
aa f		vecN (f.in*)		vecN (f.out*)
bul f o		f.in.2			f.out
bur f o		f.in.1			f.out
compose f g	g.in			f.out
cond p t e	t.in X e.in X p.in	t.out + e.out
construct f g	f.in X g.in		vec2 (f.out, g.out)
constant x	any			x.type
filter p	vecN (p.in*)		vecM (p.in*)		M <= N
insertl f	vecN (f.in.1, f.in.2*)	f.out+f.in.1+vec0
insertr f	vecN (f.in.1*, f.in.2)	f.out+f.in.2+vec0
insertt f	vecN (f.in.1*)		f.out+f.in.1+vec0	f.in.1=f.in.2
selectl n	vecN (any1)		any1			n <= N
selectr n	vecN (any1)		any1			n <= N
while p f	p.in X f.in		f.out

and		vec2 (bool)		bool
apndl		vec2 (any1,vecN(any2*))	vecN+1(any1, any2*)
apndr		vec2 (vecN(any1*),any2)	vecN+1(any1*, any2)
append		vecN (vec*(any1*))	vecM(any1*)
arguments	any			vecN(vec*(char*)+vec2(char,vec*(char*)))
atom		any			bool
checkpoint	any1			any1
distl		vec2 (any1,vecN(any2*))	vecN(vec2(any1,any2)*)
distr		vec2 (vecN(any1*),any2)	vecN(vec2(any1,any2)*)
div		vec2 (num1,num2)	num1+num2
eq		vec2 (any*)		bool
error		any			any
explode		symbol			vec*(char*)
filetype	vec*(char*)		symbol
fptimes		vec2 (num1,num2)        num1+num2
gequal		vec2 (any*)             bool
greater		vec2 (any*)             bool
id		any1			any1
implode		vec*(char*)		symbol
inputfile	vec*(char*)		vec*(char*)
iota		int			vec*(int*)
length		vec*(any*)		int
lequal		vec2 (any*)             bool
less		vec2 (any*)             bool
minus		vec2 (num1,num2)        num1+num2
mod		vec2 (num1,num2)        num1+num2
neg		num1             	num1
newline		any			vec*(char*)
not		bool			bool
notequal	vec2 (any*)		bool
null		any			bool
or		vec2 (bool)		bool
plus		vec2 (num1,num2)        num1+num2
readfile	vec*(char*)		any
reverse		vecN(any*)		vecN(any*)
rotl		vecN(any1,any2*)	vecN(any2*, any1)
rotr		vecN(any1*,any2)	vecN(any2, any1*)
tl		vecN(any1*)		vecN-1(any1*)		1 <= N
tlr		vecN(any1*)		vecN-1(any1*)		1 <= N
trace		vecN(char*)		vecN(char*)
trans		vecN(vecM(any))		vecM(vecN(any))
trunc		num             	int	
