Я хотел бы извлечь аргументы из примеров неравенства. Следующий не работает, любая идея, почему и как ее исправить?Соответствие шаблону Неравенство
Inequality[1, Less, x, Less, 2] /. Inequality[a_, _, c_, _, e_] -> {a, c, e}
Я хотел бы извлечь аргументы из примеров неравенства. Следующий не работает, любая идея, почему и как ее исправить?Соответствие шаблону Неравенство
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}
Почему вы не используете стандартный доступ к подвыражению?
expr = Inequality [1, Less, x, Less, 2]; {a, c, e} = {expr [[1]], expr [[3]], expr [[5]]};
Потому что мне нужно, чтобы заменить все неравенства с равенствами в чем-то вроде этого - HTTP://pastebin.com/wN2ENmL6 –
Кроме того, вы можете сделать это:
неравенство [1, меньше, х, Меньше, 2] /. Буквальное @ неравенство [а_, _, c_, _, e_] -> {а, с, е}
ADL
Я задавался вопросом, почему требуется 'HoldPattern', а' Trace' показывает, почему: 'Неравенство [a _, _, b_, _, c_]' становится 'Неравенство [a_, _, c_] && Неравенство [ c_, _, e_] '. Таким образом, он больше не соответствует ожидаемому. – rcollyer
@rcollyer Yep, оценивается шаблон. Попробуйте этот пример ** MatchQ [a/b, _/_] // Trace ** –
Это будет часами сжимать меня, пытаясь заставить этот шаблон работать. – rcollyer