2014/05/26 Update
主たる機能追加は「プログラミングサポート機能の強化」です
【動作環境】
64bit版: 64bit Windows(vista,7,8) Ubuntu12.4,Ubuntu14.04
32bit版: 32bit Windows(vista,7,8) Ubuntu12.4,ubuntu14.04
【Version7.53 と今回のリリース版との相違】
1) コンサルト時のエラー箇所詳細表示 | ─── マニュアル 「5-9-1.構文エラー」 |
2) 述語コールカウンタ | ─── マニュアル「6-4-5.述語コールカウンタ」 |
3) コンパイル領域不足エラー時のチェック方法 | ─── マニュアル「7-5-A.コンパイラワークエリア指定」 |
4) 制約変数の制約情報表示 | ─── 下記実行例 1: 参照 |
5) trace時にFrozenGoal惹起、収束の表示 | ─── 下記実行例 1: 参照 |
6) 制約変数対応の f_setof/3,f_bagof/3,f_assert/1,f_assertz/1 | ─── 下記実行例 2: 参照 |
<1: 実行例 (4)(5)(一部略)>
* 制約された変数を表示する時に 変数名 /* 領域 :: FrozenGoal */ を表示
* FrozenGoalが起動されたときに === Frozen Goal Invoked!! === と表示
* FrozenGoalが成功したときに === Succ From Frozen Goal === と表示
* FrozenGoalが失敗したときに === Fail From Frozen Goal === と表示
| ?-leash2(3).
yes
| ?-trace.
yes
debug mode on
||?-freeze(X,write(X)),X in 1..10,X=10.
[1] 0 Try : freeze(X_22,write(X_22)) ?
<< BUILTIN CALL >>
[1] 0 Succ : freeze(_24 /* _::write(_24),! */ ,write(_24 /* _::write(_24),! */ ))
[1] 0 Try : _24 /* _::write(_24),! */ in 1..10 ?
<< BUILTIN CALL >>
[1] 0 Succ : _24 /* [1..10]::write(_24),! */ in 1..10
[1] 0 Try : _24 /* [1..10]::write(_24),! */ =10 ?
<< BUILTIN CALL >>
=== Frozen Goal Invoked!! ===
[1] 0 Try : write(10),! ?
<< BUILTIN CALL >>
[1] 0 Try : write(10) ?
<< BUILTIN CALL >>
10 [1] 0 Succ : write(10)
[1] 0 Try : ! ?
<< BUILTIN CALL >>
[1] 0 Succ : !
[1] 0 Succ : write(10),!
=== Succ From Frozen Goal ===
[1] 0 Succ : 10=10
[1] 0 Succ : freeze(10,write(10)),10 in 1..10,10=10
X = 10
yes
< 2: 実行例 (6)>
* f_assert/1 制約された変数を含む項をアサートする際、その情報も含んでアサートします
* f_setof/3など。制約を含む変数も復元して解の集合を取得します。
| ?-freeze(X,write(X)),f_assert(a(X)).
X = _16
yes
| ?-f_setof(Y,a(Y),L),L=[data].
data
Y = _16,
L = [data]