4.1 year (All) All . , year (_,,_,_) . , . year ([ ,Y ]), , .
, . , , . , . .
, . 4.5.
/* 4.5 */
domains
list_season=season*
season=string
predicates
year (list_season)
print_list (list_season)
goal
year (L), print_list (L).
clauses
year ([ , , , ]).
print_list ([]).
print_list ([ |Y ]) :- write (X), nl, print_list (Y).
print_list () . , , , .
, , .
print_list ([]) :- L= [ |Y ], write (X), nl, print_list (Y).
, , , , 4.5.
4.5 , . . .
, 䳿 : , , ..
, , .
4.6, show_worker.
/* 4.6 */
domains
number,salary=integer
name=string
member=worker (name,salary)
list_worker=member*
predicates
office (number,list_worker)
print_list (list_worker)
show_workr
clauses
show_worker:- write ( -> ), readint (Otd), office (Otd,L), print_list (L), readchar (_).
office (101, [ worker (,500), worker (,300), worker (,200)]).
|
|
office (211,worker (, 400)]).
print_list ([]).
print_list ([ X | Y ]) :- write (X) ,nl, print_list (Y).
, . , . , ' R . , . ᒺ , ᒺ , ᒺ.
. member (R, L), R , a L . ֳ member (R, L) , R L. :
: R , R L.
: R , R L.
- :
member (R,L) :-L= [ H| ], H=R.
member (R,L) :- L= [ H| ], member (R,T).
ֳ L= [ H| ] , L . , , , . :
member (R, [ R |_ ]).
member (R, [ _ | ]) :- member (R, ).
(_) , , .
:
member (d, [ a,b,d,c ]).
, d , .
[ b,d,c ], : member (d, [ b,d,c ]). , .
member (d, [ d,c ]). , , , d . [ d,c ]. , .
member (d, [ a,b,c,e ]), , member (d, []). , .
ǒ . 璺 append (L1, L2, L3), L1 , L2 , (), a L3 , 璺. 璺 :
: L2 [] L2.
: L2 L1, L1.
:
ppend ([], L2, L2).
append (L1, L2, L3) :- L1= [ H| ], append (T, L2, X), L3= [ H|X ]
, , , , . :
|
|
append ([], L2, L2).
append ([ |L1 ], L2, [ |L3 ]) :- append (L1, L2, L3).
append ([ a,b,c ], [ d,e ], L) L= [ a,b,c,d,e ], append ([ a,b ], [ c ], [ a,c,d ]) .
, , . , , , , , :
Goal: append (X, [ |Y ], [ , , , , , ])
X= [ , , , ]
Y= [ , ]
. L delete (X, L, L1), L1 . :
: , .
: , .
delete (X, [ X | ], ).
delete (X, [ Y | T ], [ Y, T1 ]) :- delete (X, T, T1).
n- . :
: [ H| ] .
: N - [ H| ] (N -1)- .
term_in_list ([ | _ ] ,1,).
term_in_list ([ _ | ], N, X) :- M=N-1, term_in_list (T, M, X).
. :
: .
: [ H| ] .
list_len ([] ,0).
list_len ([ _|T ] ,Len) :- list_len (T,Len1), Len = Len1+1.
list_len . ' , .