view sequences/@iterdata/iterdata.m @ 2:7357e1dc2ad6

Simplified scheduler library with new schedule representation.
author samer
date Sat, 22 Dec 2012 16:17:51 +0000
parents 672052bd81f8
children
line wrap: on
line source
function x=iterdata(f,s0,varargin)
% iterdata - Construct sequence by recursive application of arbitrary function
%
% iterdata :: (A->A), A, options {} -> seq A.

	if nargin==1 && isa(s0,'iterdata'), x=s0;
	elseif nargin==0
		x=iterdata(0,@id);
	else
		x.s=s0;
		opts.datafn=@(t)t.s;
		opts.nextfn=@(t)nfn(f,t);
		opts.charfn=@(t)cfn(f,t);
		x=class(x,'iterdata',data(size(s0),prefs(opts,varargin{:})));
	end
end


function x=nfn(f,x)
	s1=f(x.s);
	if isempty(s1), x=[]; else x.s=s1; end
end

function c=cfn(f,t)
	c=['iter(' tostring(f) ')'];
end