RosettaCodeData/Task/Copy-stdin-to-stdout/Mercury/copy-stdin-to-stdout.mercury
2023-07-01 13:44:08 -04:00

41 lines
1 KiB
Text

:- module stdin_to_stdout.
:- interface.
:- import_module io.
:- pred main(io::di, io::uo) is det.
%-----------------------------------------------------------------------------%
%-----------------------------------------------------------------------------%
:- implementation.
:- import_module char.
:- import_module list.
:- import_module string.
%-----------------------------------------------------------------------------%
main(!IO) :-
io.read_line_as_string(Result, !IO),
(
Result = ok(Line),
io.write_string(Line, !IO),
main(!IO)
;
Result = eof
;
Result = error(Error),
io.error_message(Error, Message),
io.input_stream_name(StreamName, !IO),
io.progname("stdin_to_stdout", ProgName, !IO),
io.write_strings([
ProgName, ": ",
"error reading from `", StreamName, "': \n\t",
Message, "\n"
], !IO)
).
%-----------------------------------------------------------------------------%