annotate general/funutils/@function_handle/and.m @ 61:eff6bddf82e3 tip

Finally implemented perceptual brightness thing.
author samer
date Sun, 11 Oct 2015 10:20:42 +0100
parents ae596261e75f
children
rev   line source
samer@39 1 % and - sequential call function combinator
samer@38 2 %
samer@38 3 % and ::
samer@38 4 % (A{:} => B{:}),
samer@38 5 % (A{:} => C{:})
samer@38 6 % -> (A{:} => C{:}).
samer@38 7 %
samer@38 8 % and ::
samer@39 9 % (A{:} => B{:}),
samer@39 10 % (A{:} => C{:}),
samer@38 11 % N:natural,
samer@38 12 % M:natural
samer@38 13 % -> (A{1:N} => C{1:M}).
samer@39 14 %
samer@39 15 % f&g == and(f,g) is a function which first calls f with given arguments,
samer@39 16 % discarding return values, then calls g with arguments returning result.
samer@38 17 function h=and(f,g,nin,nout)
samer@38 18 if nargin<4, nout=nargout(g); end
samer@38 19 if nargin<3, nin=nargin(g); end
samer@38 20 fns = { @q11, @q1n; @qn1, @qnn };
samer@42 21 h=fns{acount(nin,1,1),acount(nout,1,1)};
samer@38 22 function y=q11(x), f(x); y=g(x); end
samer@38 23 function y=qn1(varargin), f(varargin{:}); y=g(varargin{:}); end
samer@38 24 function varargout=q1n(x), f(x); [varargout{1:nargout}]=g(x); end
samer@38 25 function varargout=qnn(varargin), f(varargin{:}); [varargout{1:nargout}]=g(varargin{:}); end
samer@38 26 end