view general/funutils/bind.m @ 61:eff6bddf82e3 tip

Finally implemented perceptual brightness thing.
author samer
date Sun, 11 Oct 2015 10:20:42 +0100
parents fbc0540a9208
children
line wrap: on
line source
% bind - Create a partially applied function
% 
% bind :: 
%    func(A{1}, ..., A{N}->B{1:L})   ~'func from N inputs to L outputs',
%    A{1}, ..., A{M}                 ~'M<=N input arguments of the correct types'
% -> func(A{M+1}, ..., A{N}->B{1:L}) ~'func from remaining arguments to returns'.
%
% BIND(fn,a1,a2,...)
%    If fn is an ordinary function, the parameters a1, a2 etc
%    are bound as the first few arguments
%
%    If fn is a function object as returned by FUNC, BIND, or PERM,
%    the given parameters are bound to the free slots of the function
%    and a new partially applied function is returned.

function cfn=bind(fn,varargin)
if ischar(fn), fn=str2func(fn); end
if ~isa(fn,'func'), fn=func(fn); end
cfn=bind(fn,varargin{:});