Selects a single clause, if possible, or otherwise reduces the
  list of selectable clauses. The input is a list Clauses
  of abstract clauses (i.e., syntax trees of type clause),
  and a list of switch expressions Exprs. The function
  tries to uniquely select a single clause or discard unselectable
  clauses, with respect to the switch expressions. All abstract clauses
  in the list must have the same number of patterns. If
  Exprs is not the empty list, it must have the same
  length as the number of patterns in each clause; see
  match_list/2 for details.
 
  A clause can only be selected if its guard expression always
  yields the atom true, and a clause whose guard
  expression always yields the atom false can never be
  selected. Other guard expressions are considered to have unknown
  value; cf. eval_guard/1.
 
  If a particular clause can be selected, the function returns
  {true, {Clause, Bindings}}, where Clause is
  the selected clause and Bindings is a list of pairs
  {Var, SubExpr} associating the variables occurring in
  the patterns of Clause with the corresponding
  subexpressions in Exprs. The list of bindings is given
  in innermost-first order; see the match/2 function for
  details.
 
  If no clause could be definitely selected, the function returns
  {false, NewClauses}, where NewClauses is
  the list of entries in Clauses that remain after
  eliminating unselectable clauses, preserving the relative order.
 
See also: eval_guard/1, match/2, match_list/2.