partition : ('a -> bool) -> 'a list -> 'a list * 'a list

SYNOPSIS
Split a list by a predicate

DESCRIBE

An invocation partition P l divides l into a pair of lists (l1,l2). P holds of each element of l1, and P does not hold of any element of l2.

FAILURE

If applying P to any element of l results in failure.

EXAMPLE
    - partition (fn i => i mod 2 = 0) [1,2,3,4,5,6,7,8,9];
    > val it = ([2, 4, 6, 8], [1, 3, 5, 7, 9]) : int list * int list

    - partition (fn _ => true) [1,2,3];
    > val it = ([1, 2, 3], []) : int list * int list

    - partition (fn _ => raise Fail "") ([]:int list);
    > val it = ([], []) : int list * int list

    - partition (fn _ => raise Fail "") [1];
    ! Uncaught exception: 
    ! Fail  ""

SEEALSO  Lib,   split_after,   pluck

HOL  Kananaskis 0