Opened 15 years ago
Closed 15 years ago
#784 closed defect (fixed)
Range: Inadecuate result
Reported by: | Owned by: | Víctor de Buen Remiro | |
---|---|---|---|
Priority: | highest | Milestone: | |
Component: | Kernel | Version: | |
Severity: | critical | Keywords: | |
Cc: |
Description
La función Range(a,b,d) que devuelve un conjunto de números en un intervalo (a,b) separados por una distancia d, tiene un comportamiento inesperado cuando a>b.
El error surge cuando hacemos una llamada del tipo:
Set Range(1,0,1); >> [[ 1, 0 ]]
que nos devuelve dos números cuando no esperaríamos ninguno.
Al parecer Range hace algo parecido a invertir los extremos del intervalo cuando el primero es mayor que el segundo, e invertir el orden de la lista de números resultantes:
Set Range(1,-3,1); >> [[1, 0, -1, -2, -3]]
aunque así también presenta un comportamiento extraño:
Set Range(1,-6,2); >> [[1, -1, -3]]
Creo que debería corregirse y que devuelva el conjunto vacío cuando el primer extremo del intervalo sea mayor que el segundo.
Change History (2)
comment:1 Changed 15 years ago by
Status: | new → accepted |
---|
comment:2 Changed 15 years ago by
Resolution: | → fixed |
---|---|
Status: | accepted → closed |
He estado buscando cuando se solicitó hace siglos la función
Range
y he visto que no se definió qué es lo que debería hacer en ese y en otros casos. Yo propuse una fórmula que es compatible con lo que propone Pedro ahora, aunque más general, pero como siempre se quedó a medias. Si nadie tiene nada en contra es lo que implementaré. Como no había nada dicho sobre lo que habría de haceren estos casos no se puede hablar de compatibilidad hacia atrás así que tenemos libertad para definir lo que queramos.