samer@3: function [Y,x]=spanc(f,x) samer@3: % spanc - divide sequence using a test function samer@3: % samer@3: % spanc :: (A->bool), seq(A) -> {[N]->A}, seq(A). samer@3: % samer@3: % spanc f x = (seq2cell (takeWhile f x),dropWhile f x) samer@3: % Will not terminate if head segments turns out to be infinite. samer@3: % samer@3: % Note: this is like span but returns a cell array for the head sequence samer@3: samer@3: if isempty(x), Y={}; return samer@3: else samer@3: Y={}; samer@3: y=head(x); samer@3: while f(y) samer@3: Y=horzcat(Y,y); samer@3: x=next(x); samer@3: if isempty(x), break; end samer@3: y=head(x); samer@3: end samer@3: end samer@3: