Haskell:
Запись в стандартный поток ошибок
Как:
Используйте System.IO для записи в stderr. Вот простой пример:
import System.IO
main :: IO ()
main = do
hPutStrLn stderr "Это пойдет в stderr"
putStrLn "Это пойдет в stdout"
Вывод при выполнении программы:
Это пойдет в stdout
Чтобы увидеть вывод stderr, перенаправьте его:
runhaskell your_program.hs 2> error.log
Теперь error.log
содержит “Это пойдет в stderr”.
Глубокое погружение
Система ввода-вывода Haskell различает stdout и stderr, сохраняя конвенции Unix. До появления Haskell языки программирования, такие как C, задавали прецедент разделения потоков — stdout для результатов, stderr для ошибок и логов.
Альтернативные способы вывода включают использование библиотек, таких как System.Log.Logger
, для более сложного логирования. Что касается реализации, stderr в Haskell является Handle
, так же как и дескриптор файла, но заранее определен для ссылки на системный поток вывода ошибок.
Смотрите также
- Библиотека Haskell System.IO: Подробная документация по System.IO.
- Learn You a Haskell for Great Good!: Вводная книга по Haskell, которая охватывает ввод-вывод.