# This function returns the "shape" (that is, the dimensions) of the
# entity `x'. If `x' is a scalar, it returns NULL. If `x' is a
# vector, it returns a scalar having the length of `x' as its value.
# If `x' is a matrix, it returns a vector having the number of rows
# and the number of columns as its first and second elements,
# respectively. If `x' has any other class, an exception is raised.
shape = function (x)
{
return self.(class(x)) (x);
};
( shape.table =
shape.("function") =
shape.("NULL") = strip (
function (x)
{
message ("run time error: Invalid %s argument for shape."; class (x));
exception ();
})
);
shape.scalar = function (x) { return NULL; };
shape.vector = function (x) { return x.ne; };
shape.matrix = function (x) { return x.nr, x.nc; };
syntax highlighted by Code2HTML, v. 0.9.1