samer@39: % vertcat - function combinator samer@38: % samer@39: % vertcat :: samer@39: % (A{:} => _), samer@39: % (A{:} => _), samer@39: % ... samer@38: % (A{:} => C{:}) samer@38: % -> (A{:} => C{:}). samer@39: function h=vertcat(varargin) samer@38: g=varargin{end}; samer@38: N=length(varargin)-1; samer@38: fx=varargin(1:N); samer@38: fns = { @q11, @q1n; @qn1, @qnn }; samer@38: h=fns{acount(nargin(g),1),acount(nargout(g),1)}; samer@38: function y=q11(x), callfx1(x); y=g(x); end samer@38: function y=qn1(varargin), callfxn(varargin); y=g(varargin{:}); end samer@38: function varargout=q1n(x), callfx1(x); [varargout{1:nargout}]=g(x); end samer@38: function varargout=qnn(varargin), callfxn(varargin); [varargout{1:nargout}]=g(varargin{:}); end samer@38: samer@38: function callfx1(x), for i=1:N, fx{i}(x); end; end samer@38: function callfxn(args), for i=1:N, fx{i}(args{:}); end; end samer@38: end