Re: negotiation by failure- list operations
- From: "Brian Hulley" <brianh@xxxxxxxxxxxx>
- Date: 13 Jun 2005 18:09:27 -0700
matthiasse@xxxxxxx wrote:
> even with
>
> member(X,[X|T]).
> member(X,[H|T]) :- member(X,T).
>
> delete1(X,List,List) :- member(X,List),!.
You missed out the \+ in front of member.
The following code does work:
member(X,[X|_]).
member(X,[_|T]) :- member(X,T).
delete1(X,List,List) :-
\+ member(X,List),!.
delete1(X,List,ListWithoutX) :-
delete(X, List, ListWithoutX).
% strange version of delete that only deletes
% the first matching element...
delete(E,[E|T],T).
delete(E,[H|T],[H|DT]) :-
delete(E,T,DT).
Usually delete/3 is defined to delete all matching elements, unlike the
definition above. But I think the definition above was implied by the
first post, otherwise there would be no need to check for
not-membership beforehand. (The normal version of delete/3 needs 2
recursive clauses and one base case but no doubt I've said too much
already :-))
Regards, Brian.
.
- Follow-Ups:
- Re: negotiation by failure- list operations
- From: Brian Hulley
- Re: negotiation by failure- list operations
- References:
- negotiation by failure- list operations
- From: ne0
- Re: negotiation by failure- list operations
- From: Brian Hulley
- Re: negotiation by failure- list operations
- From: ne0
- Re: negotiation by failure- list operations
- From: Brian Hulley
- Re: negotiation by failure- list operations
- From: matthiasse
- negotiation by failure- list operations
- Prev by Date: Re: negotiation by failure- list operations
- Next by Date: swi-prolog + jpl + suse9.3
- Previous by thread: Re: negotiation by failure- list operations
- Next by thread: Re: negotiation by failure- list operations
- Index(es):