view sequences/@seq/foldl.m @ 61:eff6bddf82e3 tip

Finally implemented perceptual brightness thing.
author samer
date Sun, 11 Oct 2015 10:20:42 +0100
parents beb8a3f4a345
children
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 iscell(y), x=cfoldl(fn,e,y); return; end
if nargin<4,
	x=e; 
	while ~isempty(y)
		x=fn(x,head(y));
		y=next(y);
	end
else
	opts=options('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