Haskell:
Pisanie do standardowego błędu

Jak to zrobić:

W Haskellu, pisanie do stderr jest proste dzięki modułowi System.IO z biblioteki podstawowej. Poniżej znajduje się podstawowy przykład demonstrujący:

import System.IO

main :: IO ()
main = do
  hPutStrLn stderr "To jest komunikat o błędzie."

Wyjście tego programu do stderr będzie:

To jest komunikat o błędzie.

Jeśli pracujesz nad bardziej złożoną aplikacją, lub jeśli potrzebujesz lepszej kontroli nad logowaniem (w tym błędów), możesz optować za użyciem biblioteki stron trzecich. Jednym z popularnych wyborów jest monad-logger, który integruje się ze stylem programowania mtl w Haskellu. Oto mały fragment używający monad-logger:

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

main :: IO ()
main = runStderrLoggingT $ do
  logErrorN "To jest komunikat o błędzie używając monad-logger."

Kiedy uruchomiony, wersja monad-logger podobnie wypisuje komunikat o błędzie, ale jest wyposażona w więcej kontekstu, jak znaczniki czasu czy poziomy logowania, w zależności od konfiguracji:

[Error] To jest komunikat o błędzie używając monad-logger.

Obie metody służą celowi pisania do stderr, z wyborem w dużej mierze zależnym od złożoności i potrzeb twojej aplikacji.