% arrf - Creat functional arrow using a function factory
%
% arrf :: 
%    FF: (SZ -> (A@typelist(N)->B@typelist(M))) ~'function to create function from sizes',
%    N: natural ~'number of inputs',
%    M: natural ~'number of outputs',
%    options {}
% -> arrow(A@typelist(N),B@typelist(M),empty).
%
% The type empty denotes the type of empty arrays, ie
% the state of an arr arrow is always an empty matrix.

function o=arrf(ffn,nin,nout,varargin)
	opts=prefs('sizefn',[],varargin{:});
	o=class(struct('fn',ffn,'sizefn',opts.sizefn),'arrf',arrow(nin,nout));
end
