let max comparison = function
  | a :: q -> List.fold_left (fun a b -> if comparison a b then a else b) a q
  | [] -> invalid_arg "Femtolib.List.max"