prefix(X,[_],X).
prefix(X,[H|Y],Z) :- prefix(X,H,[X,H]).
suffix([_],X,X).
suffix(X,[H|Y],Z) :- suffix(H,X,[H,X]).
suffix(X,[1,2,3]).
cHJlZml4KFgsW19dLFgpLgpwcmVmaXgoWCxbSHxZXSxaKSA6LSBwcmVmaXgoWCxILFtYLEhdKS4KCnN1ZmZpeChbX10sWCxYKS4Kc3VmZml4KFgsW0h8WV0sWikgOi0gc3VmZml4KEgsWCxbSCxYXSkuCgpzdWZmaXgoWCxbMSwyLDNdKS4K
prog.pl:2: warning: singleton variables [Y,Z] for prefix/3
prog.pl:5: warning: singleton variables [Y,Z] for suffix/3
prog.pl:7: fatal error: redefining built-in predicate suffix/2
compilation failed