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)