Prolog 写経記 その 63 counter_inc/2

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

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

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

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

解説

counter_inc(Count, I) はカウンタ Count の値を 1 増やし,増やす前の値 I を返す.

ふむ.

モード

counter_inc(+, +).

ふむ.

定義

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

counter_inc(Count, I) :-
	recorded(counter, counter(Count, I), Ref),
	erase(Ref),
	I1 is I + 1,
	recorda(counter, counter(Count, I1), _), !.

基本的に counter_dec/2 と同じ.以上.

注記

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

ふむ.

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

test_increment :-
	counter_set(i, 1),
	repeat,
	counter_inc(i, N),
	write(N), tab(1),
	N == 7.

またまたテスト用の述語が登場.
今度のカウンタの名前は i.デクリメントの counter11 とは違って,随分手抜きな名前だなぁ.
さっそく動かしてみませう.

5 ?- test_increment.
1 2 3 4 5 6 7 

Yes

ふむ.