/ / Funkcja podzbioru w prolog - prolog

Funkcja podzbioru w prolog - prolog

Pracuję nad napisaniem funkcji podzbioru i udało mi się to. Oto moja funkcja, która implementuje funkcję członka:

 member( X, [ X | T ] ).
member( X, [ _ | T ] ) :- member( X, T ).

subset([], _).
subset([H|T1], T2) :-
member(H, T2),
subset(T1, T2).
subset([H1|T1], [H2|T2]) :-
+ member(H1, T2),
subset([H1|T1], T2).

Moje pytanie brzmi, czy istnieje lepszy sposób na napisanie tej funkcji za pomocą funkcji członkowskiej oczywiście.

Odpowiedzi:

2 dla odpowiedzi № 1

Trzecia klauzula z subset/3 nie ma sensu i myślę, że należy go usunąć. Jeśli H1 nie jest członkiem T2, następnie wywołanie rekurencyjne subset([H1|T1], T2) oczywiście nie odniesie sukcesu.

Poza tym pierwsze dwie klauzule wydają się być właściwą drogą.