Кажется естественным, думая об арифметических операциях. Но это не всегда так.
Когда я пишу
Boole[a==b]
Я не хочу
Boole[a] == Boole[b]
И это то, что делает пакет Мейдера.
Редактировать
Отвечая на ваш комментарий ниже:
Я заметил, что Boole [] был добавлен в v.5.2, тогда как пакет Maeder был создан для v.3. Я предполагаю, что суть моего вопроса все еще вращается вокруг проблемы «дизайна». Я имею в виду, как можно обойти проблему, которую вы указали? Для меня самый ясный путь - объявить что-то о переменных, с которыми вы работаете, не так ли? - Что меня озадачивает, так это то, как обычно вы можете делать это только с Допущениями (глобально или в качестве опции для Упрощения и т. Д.). Кто-нибудь еще думает, что было бы более естественно иметь полный набор числовых атрибутов? (в этом отношении атрибут Constant - это дразнить)
Мой ответ ни в коем случае не является критикой пакета Медера, что приятно, но утверждение, что это не должно быть основным способом лечения Равных [] в ММА.
Равен [] - это функция, и поначалу ее не особенно легко понять:
- возвращает True, если lhs и rhs идентичны
- возвращает значение False, если lhs и rhs определены как неравные путем сравнения чисел или других необработанных данных, таких как строки.
- остается неоцененным, если lhs или rhs содержит такие объекты, как Indeterminate и Overflow.
- используется для представления символьного уравнения, для управления которым используются такие функции, как Solve.
Цель пакета Мейдера, который, как я понимаю, хорошо согласуется с вашим, состоит в том, чтобы придать выражению lhs == rhs то же значение и правила манипуляции, которые люди используют при выполнении математики.
В математике равенство - это отношение эквивалентности, накладывающее частичный порядок в множестве, а уравнение - это утверждение, что выражения связаны этим конкретным отношением.
Сравните эти различия с другими "функциями" Mma. Грех [x] в Мма, и в обычной математике то же самое (ну, почти), и то же самое можно сказать о большинстве зверей Мма. Однако есть несколько конструкций Mma, в которых нет точного изоморфизма математических понятий: Equal, SameQ, Equivalent и т. Д. Они являются мостом из мира математики в мир программирования. Это не строгие математические концепции, а модифицированные программные концепции для их удержания.
Извините, если я немного коснулся философской стороны.
НТН!