Haskell:
Écrire sur l'erreur standard

Comment faire :

En Haskell, écrire dans stderr est simple avec le module System.IO de la bibliothèque de base. Voici un exemple basique pour démontrer :

import System.IO

main :: IO ()
main = do
  hPutStrLn stderr "Ceci est un message d'erreur."

La sortie de ce programme vers stderr serait :

Ceci est un message d'erreur.

Si vous travaillez dans une application plus complexe, ou si vous avez besoin d’un meilleur contrôle sur la journalisation (y compris des erreurs), vous pourriez opter pour une bibliothèque tierce. Un choix populaire est monad-logger qui s’intègre au style de programmation mtl de Haskell. Voici un petit extrait utilisant monad-logger :

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

main :: IO ()
main = runStderrLoggingT $ do
  logErrorN "Ceci est un message d'erreur en utilisant monad-logger."

Lors de l’exécution, la version monad-logger produit également un message d’erreur, mais il est équipé de plus de contexte comme des horodatages ou des niveaux de journalisation, selon la configuration :

[Erreur] Ceci est un message d'erreur en utilisant monad-logger.

Les deux méthodes servent à écrire dans stderr, le choix dépendant largement de la complexité et des besoins de votre application.