2 funciones para los 2 significados de expr()☑ nueva característica interesante
☑ ¡Podría ayudar a muchos usuarios! (¿ "Nadie" usa el manejo de expresiones? - ¿Por qué, quizás?)
☑ elimina algo que parece un "error"
☐ Es bueno tenerlo
☐ nadie lo necesita
#mis10Top_2025
¿Qué inspiró esta solicitud de lista de deseos?
En JSL, Expr() se utiliza para dos propósitos:
- "está aquí()" dentro de Eval Expr()
- Te protejo() - para proteger el contenido de ser evaluado
Desafortunadamente, Eval Expr() está satisfecho con el primer Expr() y lo evalúa.
Esto restringe la flexibilidad con la que los usuarios pueden escribir expresiones anidadas: consulte:
¿Cuál es la mejora que le gustaría ver?
Agregue 2 nuevas funciones a JMP para los 2 significados de Expr():
- "está aquí() *) " dentro de Eval Expr()
- Te protejo() *) - para proteger el contenido de ser evaluado
*) ¿Utilice los comentarios para sugerir nombres de funciones optimizados?
- lo más corto posible
- lo más "revelador" posible [Name Expr() es el nombre ideal para Name Expr() - para hablantes de alemán ...]
Junto con el [legado] Expr() , deberían permitir al usuario escribir código mucho más fácilmente en JSL.
p.ej
Expresión de evaluación ( proteger (.... Expr (expresión a evaluar) ...) ...)
en el sentido de
Expresión de evaluación(proteger( .... Esta aquí(expression to evaluate) ...) ...)
¿Por qué es importante esta idea?
El uso dual de Expr() es dañino y hace que el código sea frágil y complicado.
Usar nombres separados para los dos significados solucionará el problema.
Otros deseos de 
Automatización y scriptingRe: 2 funciones para los 2 significados de expr() - Estado cambiado a: Reconocido¡Gracias por enviar esta solicitud!
Re: 2 funciones para los 2 significados de expr()@EvanMcCorkle
Re: 2 funciones para los 2 significados de expr()Todavía no estoy seguro de cómo llamar a Expr y Expr², y si Eval Expr() también necesita un doble... para ajustarse al doble de Expr².
Eval(Eval Expr( Quote( Do Something With( This(my_expr) ) )))
Eval(Eval Expr( Protect( Do Something With( Inject(my_expr) ) )))
Eval(Eat Honeypot( Protect( Do Something With( Honeypot(my_expr) ) )))
Re: 2 funciones para los 2 significados de expr()Eval(Eval XXX( Protect( Do Something With( XXX(my_expr) ) )))
Eval(Eval That( Protect( Do Something With( That(my_expr) ) )))
Esto() sería perfecto, ¿verdad? - pero ya se utiliza en el contexto de las clases.
Re: 2 funciones para los 2 significados de expr()Eval(Eval Name( Protect( Do Something With( Name(my_expr) ) )))
(c) @drewfoglia
2x victoria:
-> ¡Este enfoque también podría solucionar el problema con Name() !
Re: 2 funciones para los 2 significados de expr()Para ver el beneficio:
Para reemplazar el "offset" en esta función con un valor predefinido:
f= function({y},
Expr(a + b);
Expr(y + offset))
Con este nuevo enfoque, se puede escribir:
Expr( y + That( offset ) ) ) ) )offset=5;<BR />Eval(
Eval That( f = Function( {y},<BR /><CODE class="language-jsl"> Expr(a + b);<BR />
Con el enfoque actual, hay que generar construcciones creativas como la que se muestra a continuación, o utilizar otros trucos:
Expr(Eval Expr( y + Expr( offset ) ) ) )) )Eval(
Eval Expr( f = Function( {},<BR /><CODE class="language-jsl"> Expr(Expr(a + b);<BR />