Prolog 写経記 その 64 counter_is/2

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

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

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

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

解説

counter_is(Count, I) はカウンタ Count の現在値 I を返す.

ふむ.

モード

counter_is(+, -).

ふむ.

定義

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

counter_is(Count, I) :-
	recorded(counter, counter(Count, I), _), !.

recorded/3Prolog データベースからマッチする項を選んでいます.

注記

カウンタには counter_set/2 によって初期値が与えられている必要がある.そうでなければ counter_is は失敗する.

ふむ.

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

check_counter(Cname) :-
	counter_is(Cname, N), !,
	write(Cname),
	write('is set to'),
	write(N),
	nl.
check_counter(Cname) :-
	write(Cname),
	write('is not initialized'),
	nl.

またまたテスト用の述語が登場.
ちなみに書籍では 2 番目の節の引数名が Coname となっていますが,おそらく Cname の間違いです.あるいはその後の write/1 の引数目が Coname の間違いです.どうでもいいか.
さっそく動かしてみませう.

12 ?- check_counter(count11).
count11is set to-3

Yes
13 ?- check_counter(i).
iis set to8

Yes

ふむ.
空白がないので見づらいよ...
まぁいいか.


そんなわけで (どんなわけで?),「5 章 カウンタ」も終了♪
なんかあっさり.