Mercurial > hg > ishara
comparison general/funutils/@function_handle/and.m @ 38:9d24b616bb06
Added function algebra.
author | samer |
---|---|
date | Tue, 29 Jan 2013 15:59:01 +0000 |
parents | |
children | c388f1c70669 |
comparison
equal
deleted
inserted
replaced
37:beb8a3f4a345 | 38:9d24b616bb06 |
---|---|
1 % and - function combinator, f&g (...) = f(...); return g(...) | |
2 % | |
3 % and :: | |
4 % (A{:} => B{:}), | |
5 % (A{:} => C{:}) | |
6 % -> (A{:} => C{:}). | |
7 % | |
8 % and :: | |
9 % (A{1:N} => B{:}), | |
10 % (A{1:N} => C{1:M}), | |
11 % N:natural, | |
12 % M:natural | |
13 % -> (A{1:N} => C{1:M}). | |
14 function h=and(f,g,nin,nout) | |
15 if nargin<4, nout=nargout(g); end | |
16 if nargin<3, nin=nargin(g); end | |
17 fns = { @q11, @q1n; @qn1, @qnn }; | |
18 h=fns{acount(nin,1),acount(nout,1)}; | |
19 function y=q11(x), f(x); y=g(x); end | |
20 function y=qn1(varargin), f(varargin{:}); y=g(varargin{:}); end | |
21 function varargout=q1n(x), f(x); [varargout{1:nargout}]=g(x); end | |
22 function varargout=qnn(varargin), f(varargin{:}); [varargout{1:nargout}]=g(varargin{:}); end | |
23 end |