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