%
% list.prolog
%
% Developed by Ondrej Jombik <nepto@platon.sk>
% 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([],_,[]).
Platon Group <platon@platon.sk> http://platon.sk/
|