close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 14 years ago

Closed 14 years ago

#1117 closed defect (fixed)

The Empty Set and the Set Index

Reported by: Pedro Gea Owned by: Víctor de Buen Remiro
Priority: normal Milestone: Mantainance
Component: Kernel Version: head
Severity: normal Keywords:
Cc:

Description

Se encuentra un error al usar la función Copy sobre un conjunto indexado que ya no tiene elementos:

Set a = [[ Real a1 = 1 ]];
Real SetIndexByName(a);
Set Remove(a, 1);
Set Copy(a);

El error es similar al que se encuentra al intentar indexar un conjunto vacío:

Set b = Copy(Empty);
Real SetIndexByName(b);

No sé bien la razón del primer error, si es que el indixado tiene algún problema cuando el conjunto se queda vacío o es que un conjunto vacío sí que admite un flag que indique que está indexado.

Se sugiere evitar ambos errores.
Sería cómodo evitar líneas del tipo:

Real If(Card(set), SetIndexByName(set), 0)

y simplemente (en caso de que se necesite) utilizar la salida del método para comprobar si tuvo algún efecto.

Change History (5)

comment:1 Changed 14 years ago by Víctor de Buen Remiro

Status: newaccepted

comment:2 Changed 14 years ago by Víctor de Buen Remiro

Las funciones Append, Remove y Replace son capaces de respetar la indexación si es que existe, y lo hacen sin tener que reconstruir el índice desde cero, utilizando las funciones internas del hash para meter y sacar elementos particulares del índice.

Está claro que no hay ningún error en que haya un conjunto vacío indexado, sólo que con un índice también vacío, o quizás sería mejor decir en este caso indexable, en el sentido de que si se le hace luego uno o varios Append el conjunto podrá rehacer su índice.

No hay que dar por tanto ningún mensaje de error en ningún caso.

comment:3 Changed 14 years ago by Víctor de Buen Remiro

(In [3278]) Refs #1117

comment:4 Changed 14 years ago by Víctor de Buen Remiro

(In [3279]) Refs #1117

comment:5 Changed 14 years ago by Víctor de Buen Remiro

Resolution: fixed
Status: acceptedclosed
Note: See TracTickets for help on using tickets.