書式 | dynamic(+$PRED) | |||
---|---|---|---|---|
引数 |
| |||
述語$PREDの assert を許すよう宣言します. | ||||
> :- dynamic(cky_table). 述語"cky_table"の assert を許すよう宣言します. |
書式 | is_dynamic(+$PRED) |
---|---|
関連項目 | dynamic/1 |
述語$PREDが dynamicかどうか判定します. | |
> ?- is_dynamic(cky_table). yes 述語"cky_table"が dynamicかどうか判定します. |
書式 | multifile(+$PRED) | |||
---|---|---|---|---|
引数 |
| |||
述語$PREDの本体定義を別のモジュールに記述できることを宣言します. | ||||
> :- multifile(newwill_query). 述語"newwill_query"の本体定義を別のモジュールに記述できることを宣言します. |
書式 | is_multifile(+$PRED) |
---|---|
関連項目 | dynamic/1 |
述語$PREDが multifileかどうか判定します. | |
> ?- is_multifile(newwill_query). yes 述語"newwill_query"が multifileかどうか判定します. |
書式 | disp_result(+FS) | |||
---|---|---|---|---|
引数 |
| |||
クエリーの結果を表示し入力を待ちます. |
書式 | eval(+STRING, -PREDLIST) | ||||||
---|---|---|---|---|---|---|---|
引数 |
| ||||||
LiLFeSプログラムSTRINGを解析して述語のリストPREDLISTを返します. | |||||||
> ?- eval("strprintln(""a"").",X). |~lilfesfilecons ~| | hd:|~strprintln~| | | |_arg1:"a" _| | X: | tl:< > | | |~lilfesfileinfo ~| | | lilfesfileinfo:| lilfesfilename:"eval" | | |_ |_lilfesfileline:1 _|_| |
書式 | eval(+STRING, -PREDLIST,-VARLIST) | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
引数 |
| |||||||||
LiLFeSプログラムSTRINGを解析して述語のリストPREDLISTと変数のリストVARLISTを返します. | ||||||||||
> ?- eval("strprintln(""a"").",X,Y). |~lilfesfilecons ~| | hd:|~strprintln~| | | |_arg1:"a" _| | X: | tl:< > | | |~lilfesfileinfo ~| | | lilfesfileinfo:| lilfesfilename:"eval" | | |_ |_lilfesfileline:1 _|_| Y: < < > > |
書式 | call(+$X) | |||
---|---|---|---|---|
引数 |
| |||
素性構造構造 X で表される述語を実行します。 | ||||
> :- call(strprintln("a")). a > ?- call(X = person). X: person |
書式 | findall(+$TEMPLATE, +$GENARATOR, -$BAG) | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
引数 |
| |||||||||
バックトラックの結果をまとめてリストにします. | ||||||||||
(最も基本的な形) > x <- [bot]. y <- [bot]. z <- [bot]. > t <- [pred]. u <- [pred]. > t(x). > t(y). > t(z). > ?- findall(X, t(X), S). S: < x, y, z > X: bot (成功する型の組み合わせを得る) > u(X,Y) :- t(X), t(Y). > ?- findall([A,B], u(A,B), S). A: bot B: bot S: < < x, x >, < x, y >, < x, z >, < y, x >, < y, y >, < y, z >, < z, x >, < z, y >, < z, z > > (結果を素性構造に入れる) > xt <- [bot] + [ONE\, TWO\]. > ?- findall( (ONE:A, TWO:B), u(A,B), S). A: bot B: bot |~xt ~| |~xt ~| |~xt ~| |~xt ~| |~xt ~| |~xt ~| S: < | ONE:x |, | ONE:x |, | ONE:x |, | ONE:y |, | ONE:y |, | ONE:y |, |_TWO:x_| |_TWO:y_| |_TWO:z_| |_TWO:x_| |_TWO:y_| |_TWO:z_| |~xt ~| |~xt ~| |~xt ~| | ONE:z |, | ONE:z |, | ONE:z | > |_TWO:x_| |_TWO:y_| |_TWO:z_| |
書式 | findall(+$TEMPLATE, +$GENARATOR, -$BAG,-$TAIL) | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
引数 |
| ||||||||||||
バックトラックの結果をまとめて差分リストにします. | |||||||||||||
(最も基本的な形) > x <- [bot]. y <- [bot]. z <- [bot]. > t <- [pred]. u <- [pred]. > t(x). > t(y). > t(z). > ?- findall(X, t(X), S). S: < x, y, z > X: bot (成功する型の組み合わせを得る) > u(X,Y) :- t(X), t(Y). > ?- findall([A,B], u(A,B), S). A: bot B: bot S: < < x, x >, < x, y >, < x, z >, < y, x >, < y, y >, < y, z >, < z, x >, < z, y >, < z, z > > (結果を素性構造に入れる) > xt <- [bot] + [ONE\, TWO\]. > ?- findall( (ONE:A, TWO:B), u(A,B), S). A: bot B: bot |~xt ~| |~xt ~| |~xt ~| |~xt ~| |~xt ~| |~xt ~| S: < | ONE:x |, | ONE:x |, | ONE:x |, | ONE:y |, | ONE:y |, | ONE:y |, |_TWO:x_| |_TWO:y_| |_TWO:z_| |_TWO:x_| |_TWO:y_| |_TWO:z_| |~xt ~| |~xt ~| |~xt ~| | ONE:z |, | ONE:z |, | ONE:z | > |_TWO:x_| |_TWO:y_| |_TWO:z_| |
書式 | assert(+$C) | |||
---|---|---|---|---|
引数 |
| |||
注意 | $C には、ピリオドを含まない形で入力します。例えば、assert(p(a)). や、assert(p(X):- q(X)).のように記述します。 | |||
新たな確定節$Cを追加します。 | ||||
> p <- [pred]. a <- [bot]. b <- [bot]. > p(a). > :- assert(p(b)). > ?- p(X). X: a Enter ';' for more choices, otherwise press ENTER --> ; X: b 例では、assertによって、述語 p の定義 p(a) の後に p(b) が追加されています。 |
書式 | asserta(+$C) | |||
---|---|---|---|---|
引数 |
| |||
注意 | $C には、ピリオドを含まない形で入力します。例えば、assert(p(a)). や、assert(p(X):- q(X)).のように記述します。 | |||
新たな確定節$Cを追加します。 | ||||
> p <- [pred]. a <- [bot]. b <- [bot]. > p(a). > :- asserta(p(b) :- !). > ?- p(X). X: b Enter ';' for more choices, otherwise press ENTER --> ; no 例では、assertaによって、述語 p の定義 p(a) の前に p(b) :- ! が追加されています。クエリーでの pの呼び出しは、asserta で追加されたものが優先されるため、 p(b) が成功して ! でバックトラックが抑制されるため、元の p(a) は呼び出されなくなります。 |
書式 | halt |
---|---|
関連項目 | halt/1 |
lilfes を停止します. | |
:- halt. |
書式 | halt(+$C) | |||
---|---|---|---|---|
引数 |
| |||
lilfes を停止します. | ||||
:- halt(1). |