Я признаю, что это не ответ на ваш вопрос, но у меня сложилось впечатление, что среди опытных программистов на Haskell существует общее мнение, что в первую очередь следует избегать неисчерпывающих шаблонов, даже до точки использования -Werror
для генерации ошибок вместо просто предупреждений.
Однако я не уверен, насколько хорошо это работает в сочетании с GHCi, особенно если вы пишете функции в приглашении вместо загрузки файла - я могу представить, что это мешает больше, чем помогает в работе в интерактивном режиме. Тем не менее, запуск GHCi с соответствующими флагами командной строки дает мне желаемый результат.
Если вы хотите более радикальное решение для неисчерпывающих шаблонов, вы всегда можете портировать Catch для работы с современными версиями GHC. Хех.
Кроме того, если вы используете неисчерпывающие шаблоны, потому что функция действительно, действительно, никогда не должна вызываться с некоторыми значениями, пропущенные случаи можно заполнить чем-то вроде error $ "function foo called with ridiculous arguments " ++ show blahBlah
, если знание недопустимых аргументов быть полезным. С другой стороны, вы можете попытаться переделать свой код или определить более специализированные типы данных, чтобы функции всегда могли делать что-то разумное с любым не нижним аргументом.
В противном случае, я думаю, что вы застряли с неловкой отладкой.