Escrevendo para o erro padrão

Haskell:
Escrevendo para o erro padrão

Como fazer:

Em Haskell, escrever para stderr é direto com o módulo System.IO da biblioteca base. Abaixo está um exemplo básico para demonstrar:

import System.IO

main :: IO ()
main = do
  hPutStrLn stderr "Esta é uma mensagem de erro."

A saída deste programa para stderr seria:

Esta é uma mensagem de erro.

Se você está trabalhando em uma aplicação mais complexa, ou se precisa de melhor controle sobre o registro de atividades (incluindo erros), você pode optar por uma biblioteca de terceiros. Uma escolha popular é monad-logger que se integra com o estilo mtl de programação em Haskell. Aqui está um pequeno trecho usando monad-logger:

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

main :: IO ()
main = runStderrLoggingT $ do
  logErrorN "Esta é uma mensagem de erro usando monad-logger."

Quando executado, a versão monad-logger similarmente produz uma mensagem de erro, mas ela é equipada com mais contexto como carimbos de data/hora ou níveis de registro, dependendo da configuração:

[Error] Esta é uma mensagem de erro usando monad-logger.

Ambos os métodos servem ao propósito de escrever para stderr, com a escolha dependendo em grande parte da complexidade e das necessidades da sua aplicação.