.


:




:

































 

 

 

 


useranswer




useranswer " ". , , . useranswer, : getreply Reply)

, "yes", "" "why". get reply , , ("" "") . , getreply .

, getreply , read write, , . , getreply : getreplyl yes)

"", ; "Answer unknown, try again please" ( , , , ). getreply , , . getreplyt Reply),

.-(Reply - yes, interpret yes (...! Reply = no, interpret!...}

useranswer; Goal, Trace, Answer)

, Goal, Answer. Trace , "why". useranswer , Goal , . "askable" (). , ; askable Goal)

. Goal "askable", , . , , , "why", Trace.

16. 369


Goal , Goal ( , ). - :

useranswer Goal, Trace, Answer):-

askable [ Goal), ask(Goal, Trace, Answer).
,
,

* % Goal? % Goal

ask(Goal, Trace, Answer):-introduce! Goal), getreply t Reply), process! Reply, Goal, Trace,

Answer).

process(
Goal, Trace, Answer)

% ,

%

showtraceC Trace), ask< Goal, Trace, Answer). process! yes, Goal, Trace, Answer) Answer - true, askvars[ Goal)

i

%

Goal

% ,

%

i ,

ask(Goal, Trace, Answer). * process) no. Goal, Trace, false). % , Goal

i


introduce! Goal):-

nl, write! Ts it true: '), write 1 Goal), writet?), nl.

askvars { Goal) Goal, :

askvars (Terra):-

var(Term),!, % ?

nl, write! Term), write (' '),

read(Term), I

askvars t Terra):-

Term ■=.. [Functor Args], %

askarglist(Args). I ,

askarglist([)).

askarglist([Term ] Terms]):-

askvars(Term),

askarglist! Terms).

useranswer. , , "askable" eats, . askable[ X eats Y).

,

Prolog , .

?- useranswert peter eats meat, [], Answer).

%

Is it true: peter eats meat? *

yes.

true

Answer

, ,


:

?- -jserar.swer. Who eats What, Is it true: _17 eats _1S?

yes.

_17 = peter. 18 = meat.


[), Answer).

% Prolog %

% ,


 



II. Prolog


Answer = true

Who = peter

What = meat %

Is it true: _17 eats _18?

yes.

_17 = susan.

_18 = bananas.

Answer = true

Who = susan

What = bananas;

Is it true: eats _18?

no.

Answer = false





:


: 2015-10-01; !; : 455 |


:

:

, , . , .
==> ...

1793 - | 1645 -


© 2015-2024 lektsii.org - -

: 0.014 .