Haskell:
Escribiendo en el error estándar

Cómo hacerlo:

En Haskell, escribir en stderr es sencillo con el módulo System.IO de la librería base. A continuación se muestra un ejemplo básico para demostrarlo:

import System.IO

main :: IO ()
main = do
  hPutStrLn stderr "Este es un mensaje de error."

La salida de este programa en stderr sería:

Este es un mensaje de error.

Si estás trabajando en una aplicación más compleja, o si necesitas un mejor control sobre el registro de eventos (incluidos los errores), podrías optar por una librería de terceros. Una elección popular es monad-logger que se integra con el estilo de programación mtl de Haskell. Aquí hay un pequeño fragmento utilizando monad-logger:

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

main :: IO ()
main = runStderrLoggingT $ do
  logErrorN "Este es un mensaje de error usando monad-logger."

Cuando se ejecuta, la versión de monad-logger igualmente produce un mensaje de error, pero está equipada con más contexto, como marcas de tiempo o niveles de registro, dependiendo de la configuración:

[Error] Este es un mensaje de error usando monad-logger.

Ambos métodos sirven para el propósito de escribir en stderr, con la elección dependiendo en gran medida de la complejidad y las necesidades de tu aplicación.