Elm:
Pisanie do standardowego błędu

Jak to zrobić:

Elm jest przede wszystkim ukierunkowany na rozwój aplikacji internetowych, gdzie koncepcja bezpośredniego pisania do stderr nie ma zastosowania w taki sposób, jak ma to miejsce w tradycyjnych środowiskach linii poleceń. Jednakże, dla programów Elm działających w Node.js lub podobnych środowiskach, współdziałanie z JavaScriptem za pomocą portów jest kluczowym podejściem do osiągnięcia podobnej funkcjonalności. Oto jak można to ustawić:

Kod Elm (Main.elm):

port module Main exposing (main)

import Browser

port errorOut : String -> Cmd msg

-- Przykładowa funkcja-zabawka, która wysyła komunikat o błędzie do JS
generateError : String -> Cmd msg
generateError message =
    errorOut message

main =
    generateError "To jest komunikat o błędzie dla stderr"

Interop JavaScript (index.js):

const { Elm } = require('./Main.elm');

var app = Elm.Main.init();

app.ports.errorOut.subscribe((message) => {
  console.error(message);
});

Ten kod Elm definiuje port errorOut, który umożliwia wysyłanie wiadomości z Elm do JavaScriptu. Następnie w kodzie JavaScript nasłuchujemy wiadomości wysyłanych przez ten port i przekierowujemy je do stderr za pomocą console.error(). W ten sposób, możesz skutecznie pisać do stderr w środowisku, które to wspiera, wykorzystując funkcje interop Elm z JavaScriptem.

Przykładowe wyjście w terminalu Node.js (po uruchomieniu index.js):

To jest komunikat o błędzie dla stderr