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