type(obj) almost always returns a data type as identifier, except in type(3%5) // returns > 15
type(%%%{3,[2,1]%%%}) // returns > 5
type(obj)+0 returns the numeric value of the data type
subtype(obj) almost returns the numeric value of the subtype for list data, except in subtype(3.14159265358979323846264338328); // returns >DOMLONGFLOAT
to unify the outputs between type(obj) and subtype(obj) please can you make subtype also return an identifier, I like things to be very consistent =] with +0 returns un numeric value
Code : Tout sélectionner
purge(a,b);
type(5.0); // returns > real (DOM_)
type(5)+0; // returns > 1
type(5); // returns > integer (DOM_INT)
type(5)+0; // returns > 2
type(3+4*i); // returns > complex (DOM_COMPLEX)
type(3+4*i)+0; // returns > 4
type( symb2poly(3x^2*y,[x,y]) ) // returns > 5 (DOM_?)
type(abc); // returns > identifier (DOM_IDENT)
type(abc)+0 ; // returns > 6
type([a,a,b]); // returns > vector (DOM_LIST)
type([a,a,b])+0; // returns > 7
type(a+b); // returns > expression (DOM_SYMBOLIC)
type(a+b)+0; // returns > 8
type(3/4); // returns > rational (DOM_RAT)
type(3/4)+0; // returns > 10
type("3/4"); // returns > string (DOM_STRING)
type("3/4")+0// returns > 12
type(f(x):=x+1); // returns > func (DOM_FUNC)
type(f(x):=x+1)+0; // returns > 13
type(3%5); // returns > 15 (DOM_?)
type(3%5)+0; // returns > 15
map_17:= table("John" : 938477566,"Jack" : 938377264,"Jill" : 947662781);
type(map_17); // returns > (DOM_MAP)
type(map_17) +0; // returns > 17
set1 := set[a,a,b];
type(set1); // returns > DOM_LIST
type(set[a,a,b]); // returns > DOM_LIST
type(poly1[0,0,3,-1]); // returns > DOM_LIST
type(a,a,b); // returns > vector (DOM_LIST)
type( set[a,a,b] ); type(poly1[0,0,3,-1]); type(a,a,b); // returns > vector, vector,vector
subtype(set[a,a,b]); // returns > 2
subtype(poly1[1, -6, 11, -6]); // returns > 10
subtype(seq[a,a,b]); // returns > 1
subtype(3.14159265358979323846264338328); // DOMLONGFLOAT
subtype(set[a,a,b]); // returns > 2
subtype(set[a,a,b])+0; // returns > 2
subtype(poly1[0,0,3,-1]); // returns > poly1
subtype(poly1[0,0,3,-1])+0; // returns > 1
subtype(seq[a,a,b]); // returns > seq
subtype(seq[a,a,b])+0; // returns > 10
a code program is more self-commented when working with words instead of numbers
[code]g(x):= {
if (type(x)!=vector) return 'g'(x);
if (type(x)==identifier) return 'g'(x);
while(x[0]>0){x[0]:=x[0]-1; }
return x;
}:;