RING: (f°g)(x) === f(g(x))
what would be the advantage of this?
It's usefull for converting a left recursive expression into a right recursive expression.
other than seeming harder to read?
The °-operator would usually not be written explicitly.
most confusing is the fact you are using ° on functions.
Yes, that's the normal mathematical use.
SCOPE: Type variable allocator. Intended for avoiding type variable clashes.
please elaborate.
Type meta variables are used to bind types during type derivation. eg:
typeof(_typeof);
(1) Result: function((0=mixed) : type(0))
In the above 0 is a type meta variable. Scopes would be used to define the validity for 0, and to avoid clashes. Currently this is broken eg:
typeof(_typeof(_typeof));
(2) Result: type(function((0=mixed) : type(zero)))
The above result should have been
type(function((0=mixed) : type(0)))
With the current typing of arrays, you can't specify different types for different indices in the array.
sounds usefull, and is kinda like what i have been asking for in mappings (named tuples? :-)
how might the syntax look like? tuple(string:int:int) foo = (x "foo", 1, 3 x) where x is to be replaced with a yet to be chosen character?
It'd probably be something like
array(string,int,int:void)