☑ nueva característica interesante
☑ ¡podría ayudar a muchos usuarios!
☑ elimina algo que parece un "error"
☐ Es bueno tenerlo
☐ nadie lo necesita
#miTop10_2024
Corto:
¡Deje que JSL Editor muestre qué función evalúa sus argumentos y cuál no!
Largo:
¿Qué inspiró esta solicitud de lista de deseos?
Hay un comportamiento muy potente en JSL que, por otro lado, dificulta que los nuevos usuarios puedan empezar sin problemas:
Algunas funciones evalúan sus argumentos y otras no.
Esto es muy importante para las funciones que se utilizan para el manejo de expresiones.
Hay una maravillosa conferencia de @joseph_morgan : Using JSL to Develop Efficient, Robust Applications (EU 2018 415) sobre las diferencias, cómo vivir con ellas y cómo usarlas para desarrollar aplicaciones eficientes y robustas.
... describiendo el estado en ese momento: Jmp 14 [2018]:
Esto no existe en la documentación.
Esto es algo que descubrí [ ] mediante ingeniería inversa del comportamiento de las funciones de manejo de expresiones.
Créeme, [ ] si no piensas en estas funciones, nunca las harás bien.
Además de las funciones de manejo de expresiones enumeradas aquí, lo mismo se aplica a todas las funciones:
Si no piensas en estas funciones, nunca las podrás realizar correctamente:
Es muy importante saber si un argumento se evalúa antes de la llamada de función o no.
¿Este código funciona o no?
dt = Expr(current data table());
myscript = Expr(get script());
dt << myscript
Desafortunadamente, para el programador JSL no hay ninguna pista sobre cómo se comporta la función: ¿evalúa sus argumentos o no?
¿Quizás sólo evalúa uno de los argumentos? ¿Quién sabe?
¡El usuario tiene que saberlo!
... o bien: realizar ingeniería inversa del comportamiento de las respectivas funciones.
¿Cuál es la mejora que le gustaría ver?
Implemente algún resaltado de sintaxis para indicar las diferentes formas en que una función evalúa (o no evalúa) sus argumentos.
Complemento: Indique también la diferencia en el índice de scripts.

En el editor JSL, el resaltado se puede activar/desactivar mediante un atajo de teclado.
El Expr(_x_^2) muestra un tipo de dilema:
El argumento de Expr() no se evalúa, pero sí los dos argumentos de ^.
Tal vez el resaltado reaccione a la posición del mouse o del cursor: solo se resaltan los argumentos debajo de la rama donde se encuentra actualmente el mouse o el cursor.
¿Por qué es importante esta idea?
Con el nuevo resaltado de sintaxis, JMP guiará al usuario automáticamente para generar el código correcto.
El usuario no tiene que ejecutar el código para recibir un mensaje de error o ver un resultado incorrecto.
... o realizar ingeniería inversa de la función , como tuvo que hacer @JosephMorgan para preparar su artículo.
Otros deseos de 
Parece que entre
1) el argumento se evalúa
2) el argumento no se evalúa
Hay una tercera variante:
1b) el argumento se evalúa "una vez"
funciones que se comportan de esta manera:
- Cabeza
- Recodificar columna (primer argumento y argumento del argumento Columna de destino()
-... ?
Entonces, será necesario un tercer color.
dt = Open("$SAMPLE_DATA/Big Class.jmp");
col = Name Expr(As Column("name"));
Head(As Column("name"));
Head(col);
dt << Recode Column(AsColumn("name"),{1},Target Column(col));¿Head evalúa su argumento?
https://community.jmp.com/t5/Discussions/Begin-Data-Update/mp/753037/highlight/true#M93483
... describiendo el estado en ese momento: Jmp 14 [2018]:
Esto no existe en la documentación.
Esto es algo que descubrí [] mediante ingeniería inversa del comportamiento de las funciones de manejo de expresiones.
Créame, [ ] si no piensa en estas funciones de esta manera, nunca las hará bien.
Estado actual, Jmp18 (2024):

Hm, todavía hay algunos problemas que podrían no resolverse con el resaltado de sintaxis avanzado...
p.ej
from the printed "2" one can see that JMP actually evaluates the argument of the Set File List setting - 3 times !?!
... but at the end, it complains about the "print" ?!?
... and without the print it won't do anything, neither complain nor open the file from lista de archivos.
folder= "$SAMPLE_DATA/../Import Data/";
file= "Animals.txt";
filelist= Eval List({folder||file});
Multiple File Import(
<<SET folder=""></SET><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="hogi_0-1720645070503.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="hogi_0-1720645070503.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="hogi_0-1720645070503.png" style="width: 400px;"><span class="lia-inline-image-display-wrapper" image-alt="hogi_0-1720645070503.png" style="width: 400px;"><img src="https://us.v-cdn.net/6038925/uploads/images/66063i6C7744FFCF743C3B/hogi_0-1720645070503.png" role="button" title="hogi_0-1720645070503.png" alt="hogi_0-1720645070503.png" /></span></SPAN></SPAN></SPAN>
<STRONG>TS-00152969:</STRONG>
<EM>He hablado con el equipo de Desarrollo sobre el problema. Se trata de un defecto y lo he informado al equipo de Desarrollo para que se pueda resolver en una versión futura de JMP.<BR /><BR /> Muchas gracias -> corregido en JMP19EA5</EM>