annotate general/funutils/@function_handle/or.m @ 38:9d24b616bb06

Added function algebra.
author samer
date Tue, 29 Jan 2013 15:59:01 +0000
parents
children c388f1c70669
rev   line source
samer@38 1 % or - function combinator, f|g (...) = f(...), g(...)
samer@38 2 %
samer@38 3 % or ::
samer@38 4 % F:(A{1:N} => B{1:M}),
samer@38 5 % G:(A{1:N} => C{1:L}),
samer@38 6 % N:natural, ~'defaults to nargin(F)'
samer@38 7 % M:natural ~'defaults to nargout(F)'
samer@38 8 % -> (A{1:N} => B{1:M}, C{1:L}).
samer@38 9 function h=and(f,g,nin,nout)
samer@38 10 if nargin<4, nout=nargout(f); end
samer@38 11 if nargin<3, nin=nargin(f); end
samer@38 12 fns = { @q11, @q1n; @qn1, @qnn };
samer@38 13 h=fns{acount(nin,1),max(acount(nargout(g),1),acount(nout,1))};
samer@38 14
samer@38 15 function [y,z]=q11(x), y=f(x); z=g(x); end
samer@38 16 function [y,z]=qn1(varargin), y=f(varargin{:}); z=g(varargin{:}); end
samer@38 17 function varargout=q1n(x), [varargout{1:nout}]=f(x); [varargout{nout+1:nargout}]=g(x); end
samer@38 18 function varargout=qnn(varargin),
samer@38 19 [varargin{1:nout}]=f(varargin{:});
samer@38 20 [varargout{1:nargout}]=g(varargin{:});
samer@38 21 end
samer@38 22 end