# This function converts its argument to string type.

string = function( x )
{
  return string.(class(x))( x );
};

( string.("function") =
    strip( function( x )
           {
             message( "run time error:  Can't convert %s to string.";
                      class(x) );
             exception();
           } )
);

string.("NULL") = function( x )
{
  return "";
};

string.scalar = function( x )
{
  return sprintf( "%s"; x );
};

string.vector = function( x )
{
  local( r; i );

  r = fill( x.ne; "" );
  r.eid = x.eid;

  for ( i in seq( r.ne ) )
  {
    r[i] = sprintf( "%s"; x[i] );
  }

  return r;
};

string.matrix = function( x )
{
  local( r; i; j );

  r = fill( x.nr,x.nc; "" );
  r.rid = x.rid;
  r.cid = x.cid;

  for ( i in seq( r.nr ) )
  {
    for ( j in seq( r.nc ) )
    {
      r[i;j] = sprintf( "%s"; x[i;j] );
    }
  }

  return r;
};

string.table = function( x )
{
  local( m );

  for ( m in members( x ) )
  {
    x.(m) = string( x.(m) );
  }

  return x;
};


syntax highlighted by Code2HTML, v. 0.9.1