モジュール exec

実行制御のための基本的な組み込み述語です.

目次

述語


Top of this page Contents Index of this package LiLFeS Documents LiLFeS Home Page Tsujii laboratory

述語

dynamic/1

書式dynamic(+$PRED)
引数
+$PREDpred 述語
述語$PREDの assert を許すよう宣言します.
> :- dynamic(cky_table).
  
 述語"cky_table"の assert を許すよう宣言します. 

is_dynamic/1

書式is_dynamic(+$PRED)
関連項目dynamic/1
述語$PREDが dynamicかどうか判定します.
> ?- is_dynamic(cky_table).
 yes
  
 述語"cky_table"が dynamicかどうか判定します. 

multifile/1

書式multifile(+$PRED)
引数
+$PREDpred 述語
述語$PREDの本体定義を別のモジュールに記述できることを宣言します.
> :- multifile(newwill_query).
  
 述語"newwill_query"の本体定義を別のモジュールに記述できることを宣言します. 

is_multifile/1

書式is_multifile(+$PRED)
関連項目dynamic/1
述語$PREDが multifileかどうか判定します.
> ?- is_multifile(newwill_query).
 yes
  
 述語"newwill_query"が multifileかどうか判定します. 

disp_result/1

書式disp_result(+FS)
引数
+FSbot 素性構造
クエリーの結果を表示し入力を待ちます.

eval/2

書式eval(+STRING, -PREDLIST)
引数
+STRINGstring :LiLFeSプログラム(文字列)
-PREDLISTlist :述語のリスト
LiLFeSプログラムSTRINGを解析して述語のリストPREDLISTを返します.
> ?- eval("strprintln(""a"").",X).
 |~lilfesfilecons                          ~|
 | hd:|~strprintln~|                        |
 |    |_arg1:"a"  _|                        |
 X: | tl:< >                                   |
 |                |~lilfesfileinfo       ~| |
 | lilfesfileinfo:| lilfesfilename:"eval" | |
 |_               |_lilfesfileline:1     _|_|

eval/3

書式eval(+STRING, -PREDLIST,-VARLIST)
引数
+STRINGstring :LiLFeSプログラム(文字列)
-PREDLISTlist :述語のリスト
-VARLISTlist :変数のリスト
LiLFeSプログラムSTRINGを解析して述語のリストPREDLISTと変数のリストVARLISTを返します.
> ?- eval("strprintln(""a"").",X,Y).
 |~lilfesfilecons                          ~|
 | hd:|~strprintln~|                        |
 |    |_arg1:"a"  _|                        |
 X: | tl:< >                                   |
 |                |~lilfesfileinfo       ~| |
 | lilfesfileinfo:| lilfesfilename:"eval" | |
 |_               |_lilfesfileline:1     _|_|
 Y: < < > >

call/1

書式call(+$X)
引数
+$X(pred) 素性構造(述語)
素性構造構造 X で表される述語を実行します。
> :- call(strprintln("a")).
 a
 > ?- call(X = person).
 X: person

findall/3

書式findall(+$TEMPLATE, +$GENARATOR, -$BAG)
引数
+$TEMPLATE 得たい形のテンプレート
+$GENARATOR 調べる述語
-$BAGlist 結果のリスト
バックトラックの結果をまとめてリストにします.
(最も基本的な形) 
 > 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/4

書式findall(+$TEMPLATE, +$GENARATOR, -$BAG,-$TAIL)
引数
+$TEMPLATE 得たい形のテンプレート
+$GENARATOR 調べる述語
-$BAGlist 結果のリスト
-$TAILlist 結果のリストの最後尾
バックトラックの結果をまとめて差分リストにします.
(最も基本的な形) 
 > 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/1

書式assert(+$C)
引数
+$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/1

書式asserta(+$C)
引数
+$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/0

書式halt
関連項目halt/1
lilfes を停止します.
 :- halt.

halt/1

書式halt(+$C)
引数
+$Cinteger return code
lilfes を停止します.
 :- halt(1).

Top of this page Contents Index of this package LiLFeS Documents LiLFeS Home Page Tsujii laboratory

This document is automatically created by lildoc on Fri Sep 24 14:13:59 2004