, , , ( ). , :
;
;
;
, .
do_answer ()
/* 1 */
do_answer ("stop") :- write ("good bye").
/* 2 */
do_answer (X) :- X="all", colleague (Z,Y), write (" ", Z, " -> ", Y), nl, fail,!.
/* 3 */
do_answer (X) :- frontchar (X,"!",Z), colleague (Z,_) ,!, write (Z," "), nl, fail.
/* 4 */
do_answer (X) :- frontchar (X,"< ",Z), colleague (Q,Y), write (" ", Q, " -> ", Y), nl, Q=Z,!, fail.
/* 5 */
do_answer (X) :- colleague (X,Y), write (" ", X, " -> ", Y), nl, fail.
do_answer() ' . , ', .
1 , repeat.
5 . .
2 , all ( ). - , , , do_answer().
, , . fail, , , .
, all do_answer , , .
, do_answer all . , do_answer, 3, 4 5.
3 , , , , , . .
|
|
, , !. 3 ! .
frontchar (X,"!",Z) (. ). !, Z X, (Z =). !, .
, colleague (Z,_) - Z. , , . , .
ϳ , ᳔.
, . , write () , , . , , colleague () . , , do_answer (). , query , , repeat .
fail 3.
4 . , . , , , <.
, <. Z X, . , , . .
, , . , Q=Z , , fail , .
, do_answer(). query.
, colleague (Q, Y) , 2 5, fail, Q=Z. , fail, , ?
|
|
, do_answer() , query. , , repeat, .
4 fail , , . query do_answer (), repeat .
4 fail, . query do_answer (), , query . , .
stop, , ' fail 4.
2.10 ³ --
(') ' .
(, ),
. ̳ ' --. :
( ');
( ');
' , , . ' . parent (), , father ().
' ' father () .
/* 2.5 */
domains
n, child = symbol
predicates
father (name,child)
parnt (nam,child)
clauses
father ("", "").
father ("", "").
father ("", "").
father ("", "").
/* () */
parent (F,C) :- bound (C), fathr (F,C) ,!.
/* */
parent (F,C) :- free (C), fathr (F,C).
bound(C) , , free(C) , .
, . , , , . , , .