Mercurial > hg > ishara
comparison 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 |
comparison
equal
deleted
inserted
replaced
37:beb8a3f4a345 | 38:9d24b616bb06 |
---|---|
1 % or - function combinator, f|g (...) = f(...), g(...) | |
2 % | |
3 % or :: | |
4 % F:(A{1:N} => B{1:M}), | |
5 % G:(A{1:N} => C{1:L}), | |
6 % N:natural, ~'defaults to nargin(F)' | |
7 % M:natural ~'defaults to nargout(F)' | |
8 % -> (A{1:N} => B{1:M}, C{1:L}). | |
9 function h=and(f,g,nin,nout) | |
10 if nargin<4, nout=nargout(f); end | |
11 if nargin<3, nin=nargin(f); end | |
12 fns = { @q11, @q1n; @qn1, @qnn }; | |
13 h=fns{acount(nin,1),max(acount(nargout(g),1),acount(nout,1))}; | |
14 | |
15 function [y,z]=q11(x), y=f(x); z=g(x); end | |
16 function [y,z]=qn1(varargin), y=f(varargin{:}); z=g(varargin{:}); end | |
17 function varargout=q1n(x), [varargout{1:nout}]=f(x); [varargout{nout+1:nargout}]=g(x); end | |
18 function varargout=qnn(varargin), | |
19 [varargin{1:nout}]=f(varargin{:}); | |
20 [varargout{1:nargout}]=g(varargin{:}); | |
21 end | |
22 end |