Причина, по которой все еще отображаются эти предупреждения, заключается в том, что предупреждения и ошибки выводятся на стандартном канале error (stderr).
Таким образом, вы можете перенаправить ошибки в файл, перенаправив stderr с помощью:
ghc file.hs -Wall <b>2></b> warnings.log
Обратите внимание на 2
в <b>2</b>>
. Как уже было сказано, на этот канал выводятся как предупреждения , так и исключения .
Мы можем перенаправить поток ошибок на tee
в bash
с помощью:
ghc -Wall file.hs <b>2> >(tee warnings.log)</b>
эта функция работает для bash
, но, насколько я знаю, это не определено в стандарте POSIX. Для bash
это работает, но для sh
это похоже на ошибку.