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

#1106 closed doubt (fixed)

Duda sobre el comportamiento de la función Select

Reported by: imendez Owned by: Víctor de Buen Remiro
Priority: low Milestone:
Component: Math Version: 2.0.1
Severity: minor Keywords:
Cc:

Description

Hola, cuando la evaluación de la función Select para un elemento devuelve omitido, dicho elemento es seleccionado. ¿Debería ser así?

Se puede comprobar con el siguiente código:

Set Cjto = Select(Range(1, 28, 1), Real(Real n) { ? });

La duda me ha surgido porque dentro de la función Select comparaba dos reales, uno de los cuales valía ?, y la función Eq devolvía 1 en unos casos y ? en otros, como se ha dicho en el ticket 1096 (https://www.tol-project.org/ticket/1096)

Un saludo.

Change History (5)

comment:1 Changed 14 years ago by imendez

Component: ASCII data filesMath

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

Status: newaccepted

No tiene sentido hacer un Select con omitidos. Es simplemente imposible. El papel, o en su defecto la ventana de un editor, aguanta todo lo que quieras escribir encima, pero luego otra cosa es que lo escrito tenga algún significado.

En un Select sólo caben dos posibilidades ante cada elemento: o aceptarlo o no aceptarlo. No cabe cabe la posibilidad de omitir la selección. No hay ningún motivo por el cuál se deba aceptar o denegar un valor desconocido, así que simplemente no se puede hacer.

En puridad debería devolver una especie de conjunto omitido que sería luego intratable. Lamentablemente no está previsto en el lenguaje que lo haya ni creo que merezca la pena el esfuerzo.

Quizás sería pertinente que en estos casos saltara algún warning porque si se llega a ejecutar eso seguro que existe algún error previo que se ha pasado por alto o alguna situación imprevista.

Otras funciones con el mismo problema serían If y Else.

comment:3 Changed 14 years ago by imendez

Estoy de acuerdo, pero efectivamente creo que ayudaría que saliera un warning avisando de lo que está sucediendo, porque como dices la mayoría de las veces será por un error que hace que la condición del Select dé omitido.
De hecho, es lo que me pasó a mí, aunque a la hora de reportarlo haya puesto algo más sencillo y sin ningún sentido -directamente un Select(..., { ? }).

Gracias por la aclaración.

N.B.: he puesto el componente del ticket a "Math", no sé si es correcto, si no lo es cámbialo, por favor.

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

(In [3226]) Refs #1106
If and Case will show a warning when the condition is unknown

Fixes #1101
DeepCopy is transformed in an special function

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

Resolution: fixed
Status: acceptedclosed

(In [3227]) Fixes #1106
Select will show an error when the condition is unknown

Refs #1101
DeepCopy is transformed in an special function

Note: See TracTickets for help on using tickets.