samer@39: % lt - select inputs to function samer@39: % samer@39: % lt :: (A{1:N}=>B{:}), I:[[N]->natural] -> (C{:}=>B{:}) :- C(I)==A(1:N). samer@39: % samer@39: % f<[i,j,k...] is a function which takes any number of arguments samer@39: % but passes only the ith,jth,kth etc arguments to f, returning samer@39: % any values from f. samer@39: samer@39: function g=lt(f,I) samer@38: if nargout(f)==1, g=@q1; else g=@qn; end samer@38: samer@38: function x=q1(varargin) samer@38: x=f(varargin{I}); samer@38: end samer@38: function varargout=qn(varargin) samer@38: [varargout{1:nargout}]=f(varargin{I}); samer@38: end samer@38: end