☐ Nueva característica interesante
☐ ¡podría ayudar a muchos usuarios!
☐ elimina algo que parece un "error"
☑ Es bueno tenerlo
☐ nadie lo necesita
¿Qué inspiró esta solicitud de lista de deseos?
Para comprobar si una cadena es parte de una cadena más grande (y obtener la posición exacta), se puede utilizar contains() .
Para comprobar si un elemento está en una lista y obtener la posición exacta, se puede utilizar contains() .
Para comprobar si una expresión aparece en una expresión larga
... no existe ninguna función en JMP/JSL. Tampoco existe una función para obtener la posición.
Esto es sorprendente. Porque existe esta cosa genial.
Substitute(Expr(...), Exr(replace), Expr(with))
que necesita averiguar si una expresión se puede encontrar en una expresión principal y dónde está.
¿Cuál es la mejora que le gustaría ver?
Proporcione una función JSL para verificar si una expresión aparece en una expresión larga y para obtener la(s) posición(es):
por ejemplo, si es el argumento 5 del tercer argumento del primer argumento de la expresión principal, la función podría devolver {{1,3,5}}.
Si encuentra la expresión en varios lugares, podría devolver todas las coincidencias diferentes.
Si encuentra la expresión, pero no puede localizarla exactamente [porque es solo parte de un argumento], podría devolver 1.
Y si falta la expresión podría devolver "missing".
¿Por qué es importante esta idea?
Contiene(Expr(...), Expr(búsqueda)) facilitará la creación de scripts JSL.
Está ligeramente relacionado con otra característica nueva, :folded_hands: Indexación de expresiones: acceso de lectura y escritura
Otros deseos de 
parece funcionar:
ContainsExpr=Function ({expression, pattern},
tmp = Substitute(Name Expr(expression), Name Expr(pattern), Expr(.));
not(Name Expr(tmp)==Name Expr(expression))
);
myExpression = Expr({a+b/(x-y),3} );
ContainsExpr( Name Expr(myExpression), Expr(X));
ContainsExpr( Name Expr(myExpression), Expr(c));
ContainsExpr( Name Expr(myExpression), Expr(3));o mediante Extract Expr :
ContainsExpr=Function ({expression, pattern},
Not(is empty(Extract Expr(expression, pattern)));
);
myExpression = Expr({a+b/(x-y),3} );
ContainsExpr( Name Expr(myExpression), Expr(X));
ContainsExpr( Name Expr(myExpression), Expr(c));
ContainsExpr( Name Expr(myExpression), Expr(3));Too bad there is no setting for custom functions to NOT evaluate the argument, but just look it up - a magic Extraer Expris capable of.
Without this possibility, maybe it's better to learn the Not(is empty(Extract Expr(
... instead of EVERY time having to wrap the arguments with Expr() to save them from getting evaluated.
@Sarah-Sylvestre .
-> el deseo se puede cerrar.