よく使う述語: 入出力編
Mercury の標準ライブラリから, 入出力に関連するよく使いそうな述語をピックアップしました.
よく使う述語
io.print
:- pred io.print(T::in, io::di, io::uo) is det.
:- pred io.print(io.output_stream::in, T::in, io::di, io::uo) is det.
任意の値を出力する.
io.format
:- type string.poly_type ---> f(float); i(int); s(string); c(char). :- pred io.format(string::in, list(io.poly_type)::in, io::di, io::uo) is det. :- pred io.format(io.output_stream::in, string::in, list(io.poly_type)::in, io::di, io::uo) is det.
フォーマットを指定して値を出力する.
文字 | 型 | 形式 |
---|---|---|
d, i | int | 符号付き整数 |
o | int | 符号付き8進整数 |
x, X | int | 符号付き16進整数 |
u | int | 符号無し整数 |
c | char | 文字 |
s | string | 文字列 |
f | float | 浮動小数点数 |
e, E | char | 浮動小数点数の科学表記 |
g, G | char | 浮動小数点数の科学表記(小数点とその後の0が省略される) |
p | int | 値を整数を出力 |
C言語同様に,フラグ(0+-#
)フィールド長(または*
),精度(.*
も可)も指定できる.
io.nl
:- pred io.nl(io::di, io::uo) is det. :- pred io.nl(io.output_stream::in, io::di, io::uo) is det.
改行文字を出力する.
io.flush_output
:- pred io.flush_output(io::di, io::uo) is det. :- pred io.flush_output(io.output_stream::in, io::di, io::uo) is det.
出力バッファの強制書き出し.
io.result 型
:- type io.result(T) ---> ok(T) ; eof ; error(io.error).
入力の結果を返す.
io.read_line
:- pred io.read_line(io.result(list(char))::out, io::di, io::uo) is det.
入力から1行読み込んで読み込んだ文字列を文字のリストにして返す.
io.read_line_as_string
:- pred io.read_line_as_string(io.result(string)::out, io::di, io::uo) is det. :- pred io.read_line(io.input_stream::in, io.result(list(char))::out, io::di, io::uo) is det.
入力から1行読み込んで読み込んだ文字列を返す.
io.read_char
:- pred io.read_char(io.result(char)::out, io::di, io::uo) is det. :- pred io.read_char(io.input_stream::in, io.result(char)::out, io::di, io::uo) is det.
入力から1文字読み込んで返す.
io.error_message
:- func io.error_message(io.error) = string. :- pred io.error_message(io.error::in, string::out) is det.
io.error
型の値をその内容を表す文字列に変換する.
io.res 型
:- type io.res(T) ---> ok(T) ; error(io.error).
IO処理の結果の型.
io.open_output
:- pred io.open_output(string::in, io.res(io.output_stream)::out, io::di, io::uo) is det.
ファイルを開いて出力ストリームを返す.
io.open_append
:- pred io.open_append(string::in, io.res(io.output_stream)::out, io::di, io::uo) is det.
ファイルを開いて出力ストリーム(追記モード)を返す.
io.close_output
:- pred io.close_output(io.output_stream::in, io::di, io::uo) is det.
出力ストリームを閉じる.
io.open_input
:- pred io.open_input(string::in, io.res(io.input_stream)::out, io::di, io::uo) is det.
ファイルを開いて入力ストリームを返す.
io.close_input
:- pred io.close_input(io.input_stream::in, io::di, io::uo) is det.
入力ストリームを閉じる.
io.stdout_stream
:- pred io.stdout_stream(io.output_stream::out, io::di, io::uo) is det.
標準出力ストリームを返す.
io.stderr_stream
:- pred io.stderr_stream(io.output_stream::out, io::di, io::uo) is det.
標準エラー出力ストリームを返す.
io.stdin_stream
:- pred io.stdin_stream(io.input_stream::out, io::di, io::uo) is det.
標準入力ストリームを返す.
io.set_output_stream
:- pred io.set_output_stream(io.output_stream::in, io.output_stream::out, io::di, io::uo) is det.
現在の出力ストリームを指定したものに変更する. 以前の入力ストリームを返す.
io.output_stream
:- pred io.output_stream(io.output_stream::out, io::di, io::uo) is det.
現在の出力ストリームを返す.
io.set_input_stream
:- pred io.set_input_stream(io.input_stream::in, io.input_stream::out, io::di, io::uo) is det.
現在の入力ストリームを指定したものに変更する. 以前の入力ストリームを返す.
io.input_stream
:- pred io.input_stream(io.input_stream::out, io::di, io::uo) is det.
現在の入力ストリームを返す.
io.command_line_arguments
:- pred io.command_line_arguments(list(string)::out, io::di, io::uo) is det.
コマンドライン引数を文字列のリストで取得(コマンド名は含まない).
io.call_system
:- pred io.call_system(string::in, io.res(int)::out, io::di, io::uo) is det.
指定したコマンドを実行して結果を返す.