| 書式 | 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). | ||||