Типичная ситуация, с которой я сталкиваюсь, когда ноутбук выходит за рамки нескольких функций - я оцениваю выражение, но вместо правильного ответа я получаю Beep, за которым следуют десятки бесполезных предупреждений, за которыми следует "дальнейший вывод... будет подавлен"
Одна вещь, которую я нашел полезной - используйте Python-подобные "утверждать" внутренние функции для обеспечения внутренней согласованности. Любые другие советы?
Assert[expr_, msg_] := If[Not[expr], Print[msg]; Abort[], None]
изменить 11/14 Общая причина лавины предупреждения - это когда подвыражение оценивается как "плохое" значение. Это приводит к тому, что родительское выражение оценивается как "плохое" значение, и это "плохое" распространяется до корня. Встроенные оценки, оцененные по пути, замечают плохость и вызывают предупреждения. "Плохо" может означать выражение с неправильным заголовком, список с неправильным числом элементов, отрицательная определенная матрица вместо положительно определенной и т.д. Вообще-то это не соответствует семантике родительского выражения.
Один из способов справиться с этим состоит в том, чтобы переопределить все ваши функции, чтобы возвратить неоцененный "плохой вход". Это позаботится о большинстве сообщений, созданных встроенными. Встроенные функции, которые выполняют структурные операции, такие как "Часть", будут по-прежнему пытаться оценить ваше значение и могут вызывать предупреждения.
Наличие отладчика, установленного на "break on Messages", предотвращает лавину ошибок, хотя кажется, что она слишком долгое время, чтобы она включалась