static public Pair <Stream <Pair <T, int>, Epoch>, List <Func <Pair <T, int>, int> > > ExtendCliques <T>(this Pair <Stream <T, Epoch>, List <Func <T, int> > > cliques, DenseKeyIndex <int, Pair <int, int> > index) { var newSelectors = cliques.Second.ExtendSelectors(); return(cliques.First.NextOrderCliques <T>(index, cliques.Second).PairWith(newSelectors)); }
static public Stream <Pair <T, int>, Epoch> NextOrderCliques <T>(this Stream <T, Epoch> cliques, DenseKeyIndex <int, Pair <int, int> > index, IEnumerable <Func <T, int> > selectors) { return(cliques.GenericJoinLayer(selectors.Select(selector => index.CreateExtender(selector)).ToArray()).Expand()); }