samer@39: % ctranspose - flip first two function arguments samer@39: % samer@39: % ctranspose :: (A,B,C{:}=>D{:}) -> (B,A,C{:}=>D{:}). samer@38: function h=ctranspose(f,nin,nout) samer@38: fns = { @q21, @q2n; @qn1, @qnn }; samer@38: if nargin<3, nout=nargout(f); end samer@38: if nargin<2, nin=nargin(f); end samer@38: h=fns{acount(nin,2)-1,acount(nout,1)}; samer@38: function y=q21(x,y), y=f(y,x); end samer@38: function y=qn1(x,y,varargin), y=f(y,x,varargin{:}); end samer@38: function varargout=q2n(x,y), [varargout{1:nargout}]=f(y,x); end samer@38: function varargout=qnn(x,y,varargin), [varargout{1:nargout}]=f(y,x,varargin{:}); end samer@38: end