function X=cfold(fn,x)
% fold - Fold combinator for cells
%
% fold :: (X,X->X), cells(A) -> X.
%
% This function applies an associative operator to a list of arguments,
% as if the list was written out with the operator between consecutive
% elements, eg fold(@plus,{1,2,3,4}) = 1+2+3+4.

if isempty(x), X={}; else X=cfoldl(fn,head(x),next(x)); end
