view sequences/@seq/foldl.m @ 6:0ce3c2070089

Removed duplicate code and fixed doc in timed_action.
author samer
date Mon, 14 Jan 2013 14:33:37 +0000
parents 3f77126f7b5f
children 03694e5c8365
line wrap: on
line source
function x=foldl(fn,e,y,varargin)
% foldl - Fold combinator for sequences
%
% This function applies an associative operator to a list of arguments,
% starting from the left using the given starting element.
%
% foldl :: 
%    (X,Y->X)	~'associative binary operator',
%    X         ~'initial element',
%    seq(Y)    ~'a lazy sequence'
% -> X.

if nargin<4,
	x=e; 
	while ~isempty(y)
		x=fn(x,head(y));
		y=next(y);
	end
else
	opts=prefs('quiet',1,varargin{:});
	x=e; 
	while ~isempty(y)
		x=fn(x,head(y));
		y=next(y);
		if ~opts.quiet, fprintf('.'); end
		optpause(opts);
	end
end