Prolog 写経記 その 64 counter_is/2
(ほぼ) 毎日淡々と Prolog を写経します.元ネタはこちら.
- 作者: ボグダンフィリピッチ,中島誠,伊藤哲郎
- 出版社/メーカー: 海文堂出版
- 発売日: 1990/08
- メディア: 単行本
- 購入: 4人 クリック: 33回
- この商品を含むブログ (68件) を見る
counter_is/2
を写経します.解説
counter_is(Count, I)
はカウンタCount
の現在値I
を返す.
ふむ.
モード
counter_is(+, -).
ふむ.
定義
では,こいつの定義を写経しませう.
counter_is(Count, I) :- recorded(counter, counter(Count, I), _), !.
recorded/3
で Prolog データベースからマッチする項を選んでいます.
注記
カウンタには
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 章 カウンタ」も終了♪
なんかあっさり.