Haskell:
写入标准错误

如何做:

在 Haskell 中,使用基础库的 System.IO 模块向 stderr 写入相当简单。下面是一个基本示例来演示:

import System.IO

main :: IO ()
main = do
  hPutStrLn stderr "这是一条错误信息。"

此程序对 stderr 的输出将是:

这是一条错误信息。

如果你在更复杂的应用程序中工作,或者你需要更好地控制日志记录(包括错误),你可能会选择一个第三方库。一个受欢迎的选择是 monad-logger,它与 Haskell 编程的 mtl 风格集成。这是使用 monad-logger 的一个小片段:

{-# LANGUAGE OverloadedStrings #-}
import Control.Monad.Logger

main :: IO ()
main = runStderrLoggingT $ do
  logErrorN "这是使用 monad-logger 的错误信息。"

当运行时,monad-logger 版本同样输出一个错误信息,但它配备了更多上下文,如时间戳或日志级别,这取决于配置:

[Error] 这是使用 monad-logger 的错误信息。

这两种方法都实现了向 stderr 写入的目的,选择主要取决于你的应用程序的复杂性和需求。