Prolog 写経記 その 74 beep/1

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

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

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

昨日で「7 章 出力ユーティリティ」は終わってました.
そんなわけで (どんなわけで?),今日からは「8 章 画面管理」です.
今日は beep/1 を写経します.

解説

beep(N) は端末のベルを N 回鳴らす.

ベル?
...
こんなのまで写経するのか?
...
まぁいいか,するか.

モード

beep(+).

ふむ.

定義

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

beep(N) :-
	integer(N),
	N >= 0,
	ring(N), !.

ring(0) :- !.
ring(N) :-
	put(7),
	More is N - 1, !,
	ring(More).

7 って ASCII の 7 が beep ってこと?
知らなかったよ.勉強になるなぁ?

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

error_message(Text) :-
	beep(3),
	write(Text).

ほほー.
これを使った例は掲載されていないので適当に.

3 ?- error_message('Ebi! Yuri!').
Ebi! Yuri!

Yes

えー.
Windows 上の SWI-Prolog では .wav が再生されるせいか,3 回鳴りません.(^^;
N を 100 にしても 1000 にしても

ひょろん〜♪

と鳴って終わりです.
まぁいいや.