Sequence flattening with parameterized descent predicate