Prolog 写経記 その 78 erase/2

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

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

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

続けて erase/2 を写経します.

解説

erase(Entity, Part) は画面のある部分を消去する.Entityscreenline であり,Part はカーソルの現在位置に関する fromto あるいは all である.

ふーん.
おらいが使っているのは Windows 版の SWI-Prolog なんですが...
ちゃんと役に立つのでしょうか?
かなり微妙...
(こぴぺ)

モード

erase(+, +)

ふむ.

定義

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

erase(Entity, Part) :-
	entity_code(Entity, Char),
	part_code(Part, Code),
	escape(Code, Char).

entity_code(screen, 'J') :- !.
entity_code(line, 'K').

part_code(from, '0') :- !.
part_code(to, '1') :- !.
part_code(all, '2').

つまんね.

では使用例を写経しませう.

cls :- erase(screen, all).
delete_line :- erase(line, all).

cursor/2 を使った述語の定義のみ.
試しに使ってみますか.
まずは cls/0

Yes
6 ?- 

おぉ!!!!
消えたよ!!
上記は,cls/0 を実行した後です.でもでも,その cls/1 を入力した部分は消えてます.
SWI-Prolog,ちょっとだけ仕事した!!
続けて delete_line/0

6 ?- delete_line.


Yes

??
消えたのかどうかが分からない...
ちょっと表示を加えてもう一度.

7 ?- write('Ebi'), delete_line, write('Yuri').
EbiYuri

Yes
8 ?- 

うーみゅ...
残念ながら行の消去は対応していないようです.
って,全然残念って気がしませんが.どうでっもいぃでっすよ♪