%%% Some utilities for use with the built-in lists of Lambda Prolog.
%%% AUTHOR: Gary T. Leavens

module list_utils.
  
  %%% ``append A B C'' succeeds when C is A concatenated to B.
  
  append nil Xs Xs.
  append (Head :: Tail) Ys (Head :: Zs) :- append Tail Ys Zs.
  
  %%% ``length L N'' succeeds when L has length N.
  
  length nil 0.
  length (X::Xs) N :- length Xs XL, N is XL + 1.
end
