' , . , , 䳿 .
, , work() (), , , , , .. , end . (, ³, , , ).
, work3(). 㳺 ,
work3 (, 101, , 200,
work3 (, 211, , 450,
work3 (, 101, , 300, end)))
, , . end , , . , , , . : (, ³, , , ).
, , . () . record(), , .
() work (), . . . work() . , , ( NextRecord).
record (work (Name, Office, Post, Salary), work3 (Name, Office, Post, Salary, NextRecord)).
record (work (Name, Office, Post, Salary), work3 (_, _, _, _, NextRecord)) :- work3 (work (Name, Office, Post, Salary), NextRecord).
record(), 101 , , .
Goal: record (work (Name, 101, Post, Salary), work3 (, 101, , 200, work3 (, 211, , 450, work3 (, l01, , 300, end))).
|
|
³ :
Name=,
Post=onepaop,
Salary=200
Name=,
Post=,
Salary=300
print_101 5.1.
/* 5_1 */
domains
name = symbol
office = integer
worker = work (name, office)
/* */
work3 = work3 (name, office, work3); end
predicates
print_101
record (worker, work3)
goal
print_101.
clauses
record (work (X, Y), work3 (X, Y, _)).
record (work (X, Y), work3 (_, _, Z)) :- record (work (X, Y), Z).
print_101:- write ( 101 ), nl, record (work (X, 101), work3 (, 101, work3 (, 211, work3 (, 101, end)))), write (X), nl, fail.
work3(), . work() ( ³), work(), .
record() .