Como dividir uma sequência em duas partes por predicado?

Como dividir uma sequência em duas listas por um predicado?

Alternativa: eu posso usarfilter efilterNot, ou escrever meu próprio método, mas não existe um método melhor (mais interno)?