jed-users mailing list

[2003 Date Index] [2003 Thread Index] [Other years]
[Thread Prev] [Thread Next]      [Date Prev] [Date Next]

Re: a[[i1:i2]], substring and min, max


John E. Davis wrote:

> For performance reasons, indexing by arrays in slang uses modular
> arithmetic.  The alternative would be to perform a bounds check on
> each index of the array resulting in a performance hit.  I will look
> into why a[[0:-5]] returns the empty string.

Actually I had no real problem with this until now. I was just comparing
this kind of substrings to substr referring bounds and error conditions.

Anyway, I think the functionality of a[[i1:i2]] is very useful, but
unfortunatly not usable in some context like array_map.
Therefor my proposal about substring.
Here revised, sans typo and redundant if:

define substring( s, i1, i2)
{
   if ( i1 < 0) i1+= strlen(s);
   if ( i2 < 0) i2+= strlen(s);
   
   i1= max( 0, i1);
   i2= min( i2, strlen(s)-1);
   
   if ( i1 > i2) return "";
   
   return s[[i1:i2]];
}

Wouldn't it make sense to have both, the a[[*]] with the
faster modulo logic and a substring like above?

-- Klaus


[2003 date index] [2003 thread index]
[Thread Prev] [Thread Next]      [Date Prev] [Date Next]