samer@3: function x=foldl(fn,e,y,varargin) samer@3: % foldl - Fold combinator for sequences samer@3: % samer@3: % This function applies an associative operator to a list of arguments, samer@3: % starting from the left using the given starting element. samer@3: % samer@3: % foldl :: samer@3: % (X,Y->X) ~'associative binary operator', samer@3: % X ~'initial element', samer@3: % seq(Y) ~'a lazy sequence' samer@3: % -> X. samer@3: samer@13: if iscell(y), x=cfoldl(fn,e,y); return; end samer@3: if nargin<4, samer@3: x=e; samer@3: while ~isempty(y) samer@3: x=fn(x,head(y)); samer@3: y=next(y); samer@3: end samer@3: else samer@37: opts=options('quiet',1,varargin{:}); samer@3: x=e; samer@3: while ~isempty(y) samer@3: x=fn(x,head(y)); samer@3: y=next(y); samer@3: if ~opts.quiet, fprintf('.'); end samer@3: optpause(opts); samer@3: end samer@3: end