Me gustaría extraer argumentos de instancias de desigualdad. Lo siguiente no funciona, ¿alguna idea de por qué y cómo solucionarlo?Patrón coincidencia de desigualdad
Inequality[1, Less, x, Less, 2] /. Inequality[a_, _, c_, _, e_] -> {a, c, e}
Me gustaría extraer argumentos de instancias de desigualdad. Lo siguiente no funciona, ¿alguna idea de por qué y cómo solucionarlo?Patrón coincidencia de desigualdad
Inequality[1, Less, x, Less, 2] /. Inequality[a_, _, c_, _, e_] -> {a, c, e}
Inequality[1,Less,x,Less,2] /. HoldPattern[Inequality[a_,_,b_,_,c_]] -> {a, b, c}
Out: {1, x, 2}
¿Por qué no utiliza el acceso estándar a la subexpresión?
expr = Inequality [1, Less, x, Less, 2]; {a, c, e} = {expr [[1]], expr [[3]], expr [[5]]};
Debido a que tengo que sustituir todas las desigualdades con igualdades en algo como esto - http://pastebin.com/wN2ENmL6 –
Además, se puede hacer esto:
Desigualdad [1, Menos, x, menos, 2] /. literal @ Desigualdad [a_, _, c_, _, e_] -> {a, c, e}
ADL
Me pregunté por qué 'HoldPattern' es obligatorio y' Trace' revela por qué: 'Inequality [a _, _, b _, _, c_]' se convierte en 'Inequality [a_, _, c_] && Inequality [ c_, _, e_] '. Por lo tanto, ya no coincide con lo que esperabas. – rcollyer
@rcollyer Sí, se evalúa un patrón. Pruebe este ejemplo ** MatchQ [a/b, _/_] // Trace ** –
Eso me volvería loco durante horas tratando de que ese patrón funcione. – rcollyer