Mercurial > hg > ishara
changeset 41:79632e7bcb52
Fixes to partial application, added partial application from left
author | samer |
---|---|
date | Tue, 29 Jan 2013 17:22:52 +0000 |
parents | 62304c930111 |
children | ae596261e75f |
files | general/funutils/@function_handle/mrdivide.m general/funutils/@function_handle/rdivide.m general/funutils/README.txt |
diffstat | 3 files changed, 13 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/general/funutils/@function_handle/mrdivide.m Tue Jan 29 17:04:40 2013 +0000 +++ b/general/funutils/@function_handle/mrdivide.m Tue Jan 29 17:22:52 2013 +0000 @@ -5,7 +5,10 @@ % A{1} ~'first argument' % -> (A{2:N}->B{1:L}) ~'func from remaining arguments to returns'. -function g=lt(f,x) - g=@(varargin)f(x,varargin{:}); +function g=mrdivide(f,x) + fns = { @q0, @q1, @(varargin)f(x,varargin{:}) }; + g=fns{1+acount(nargout(f),1)}; + function q0(varargin), f(x,varargin{:}); end + function y=q1(varargin), y=f(x,varargin{:}); end end
--- a/general/funutils/@function_handle/rdivide.m Tue Jan 29 17:04:40 2013 +0000 +++ b/general/funutils/@function_handle/rdivide.m Tue Jan 29 17:22:52 2013 +0000 @@ -6,6 +6,9 @@ % -> (A{M+1:N}=>B{:}). function g=rdivide(f,args) - g=@(varargin)f(args{:},varargin{:}); + fns = { @q0, @q1, @(varargin)f(args{:},varargin{:}) }; + g=fns{1+acount(nargout(f),1)}; + function q0(varargin), f(args{:},varargin{:}); end + function y=q1(varargin), y=f(args{:},varargin{:}); end end
--- a/general/funutils/README.txt Tue Jan 29 17:04:40 2013 +0000 +++ b/general/funutils/README.txt Tue Jan 29 17:22:52 2013 +0000 @@ -14,12 +14,13 @@ ^ mpower - unary application .^ power - application to cell array of arguments / rdivide - bind (unary partial application) - ./ mrdivide - unary application (bind and call) [!!! cell input?] + \ ldivide - bind (unary partial application) arg on left + ./ mrdivide - partial application with cell array + .\ mldivide - partial application cell array on left > gt - select output args >= ge - collect N output args in cell < lt - select input args <= le - select input args from cell array - ~ not - collect all output args to cell ' ctranspose - flip 1st and 2nd args [f1,f2,...,fn] == f1|f2|...|fn @@ -27,7 +28,7 @@ f/x/y^z == f.^{x,y,z} - Unused operators: \ .\ .* + Unused operators: .* Old functions (some not functional algebraic)