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
|