Prolog 写経記 その 75 escape/1, escape/2, escape/3

(ほぼ) 毎日淡々と Prolog を写経します.元ネタはこちら.

Prologユーティリティライブラリ

Prologユーティリティライブラリ

今日は escape/1escape/2escape/3 を写経します.
順番では charset/1 なのですが,その中で escape/1 を使っているのでこちらを先に.

解説

端末に制御シーケンスを送るのに使われる述語.

ふむ.

モード

escape(+)
escape(+, +)
escape(+, +, +)

ふむ.

定義

では,こいつの定義を写経しませう.

escape(Code) :-
	put(27),
	write(Code).
escape(Code1, Code2) :-
	put(27),
	write('['),
	write(Code1),
	write(Code2).
escape(Code1, Code2, Code3) :-
	put(27),
	write('['),
	write(Code1),
	write(';'),
	write(Code2),
	write(Code3).

おぉ,これは UNIX なんかのターミナルでよく使うやつですね.
色付けたりリバースにしたりとか.
でもまぁ,述語としてはどうとうこともなく.

注記

逝去シーケンスを出す述語は,画面管理の述語のほとんど全てに利用されている.別な方法で制御シーケンスを端末に送ることもできる.たとえば,必要な全てのコードを並べたリストを作り,ついで次の述語で出力するとよい.

write_code([]) :- !.
write_code([C | Rest]) :-
	write(C),
	write_code(Rest).

ふむ.

では使用例を写経しませう.
...
と思ったのだけれど,使用例がない...
まぁ,他の述語で使ってるっていうんだからよしとしよう.