% % list.prolog % % Developed by Ondrej Jombik % Copyright (c) 2005 Platon SDG, http://platon.sk/ % Licensed under terms of GNU General Public License. % All rights reserved. % % Changelog: % 2005-05-02 - created % % $Platon$ my_is_empty_list([]). my_is_list([]). my_is_list([_|Xs]):-my_is_list(Xs). my_member(X,[X|_]). my_member(X,[_|Xs]):-my_member(X,Xs). my_first(X,[X|_]). my_last(X,[X]). my_last(X,[_|Xs]):-my_last(X,Xs). my_length([], 0). my_length([_|Xs], s(L)):-my_length(Xs, L). % sss(A,B,C):-[A,B|C]. my_prefix([],_). my_prefix([X|Xs], [Y|Ys]):-X=Y,my_prefix(Xs,Ys). my_prefix2([],_). my_prefix2([X|Xs], [X|Ys]):-my_prefix2(Xs,Ys). % How to compare if my_prefix() is the same as my_prefix2()? my_append([],X,X). my_append([X|Xs],Y,[X|Zs]):-my_append(Xs,Y,Zs). my_prefix3(X,Y):-my_append(X,_,Y). my_suffix3(X,Y):-my_append(_,X,Y). my_reverse([],[]). my_reverse([X|Xs],Y):-my_reverse(Xs,Q),my_append(Q,[X],Y). % on false causes infinite loop; why?? my_infix([],_). my_infix(X,Y):-my_append(_,X,C),my_append(C,_,Y). my_infix2(X,Y):-my_prefix(X,Y). my_infix2(X,[_|Ys]):-my_infix2(X,Ys). my_prefix_hocico([],_). my_prefix_hocico([X|Xs],[X|Ys]):-my_prefix_hocico(Xs,Ys). my_prefix_hocico([hocico|Xs],[_|Ys]):-my_prefix_hocico(Xs,Ys). my_prefix_hocico([_|Xs],[hocico|Ys]):-my_prefix_hocico(Xs,Ys). my_prefix_hocico([hocico|Xs],[hocico|Ys]):-my_prefix_hocico(Xs,Ys). my_infix_hocico(X,Y):-my_prefix_hocico(X,Y). my_infix_hocico(X,[_|Ys]):-my_infix_hocico(X,Ys). my_subseq([X|Xs],[X|Ys]):-my_subseq(Xs,Ys). my_subseq(Xs,[_|Ys]):-my_subseq(Xs,Ys). my_subseq([],_). my_delete([X|Xs], X, Ys):-my_delete(Xs,X,Ys). my_delete([X|Xs], Z, [X|Ys]):-X\=Z,my_delete(Xs,Z,Ys). my_delete([],_,[]). % ??? my_delete_list(X,[Y|Ys],Z):-my_delete(X,Y,Q),my_delete_list(Q,Ys,Z). my_delete_list(X,[],X). my_delete_list([],_,[]).