1:- module(util, [ 2 string_list_concat/2, 3 join/3, 4 pp/1 5 ]). 6 7string_list_concat([], ""). 8string_list_concat([X|Xs], S) :- 9 string_list_concat(Xs, Ss), 10 string_concat(X, Ss, S). 11 12join(Glue, Ls, R) :- 13 delete(Ls, "", Ls1), 14 delete(Ls1, '', Ls2), 15 join_(Glue, Ls2, R). 16 17join_(_, [], "") :- !. 18join_(_, [X], X) :- !. 19join_(Glue, [X|Xs], R) :- 20 join(Glue, Xs, R2), 21 string_list_concat([X, Glue, R2], R). 22 23% just for debugging purposes 24pp(Term) :- 25 print_term(Term, []), 26 nl