Mercurial > hg > ishara
diff general/funutils/tailrec.m @ 4:e44f49929e56
Adding reorganised general toolbox, now in several subdirectories.
author | samer |
---|---|
date | Sat, 12 Jan 2013 19:21:22 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/general/funutils/tailrec.m Sat Jan 12 19:21:22 2013 +0000 @@ -0,0 +1,16 @@ +% tail_feval - Call function with tail recursion +% +% tail_feval :: (A{1:N}->rthunk(B{1:M}), A{1:N} -> B{1:M}. +% +% rthunk(B{1:M}) ::= +% exists C{1:L} . cell { C{1:L} -> rthunk(B{1::}), C{1:L} }. +% | cell { {0}, cell { B{1:L} } } +function varargout=tail_feval(fn,varargin) + ret=fn(varargin{:}); + while ~isnumeric(ret{1}) + ret=feval(ret{1},ret{2}{:}); + end + varargout=ret{2}(1:nargout); +end + +