[back]

Prefix Map

Implement the function

val prefix_map : ('a list -> 'b option) -> 'a list -> ('b * 'a list) option

so that prefix_map f l is

Examples

let f pre = let s = List.fold_left (+) 0 pre in if s >= 5 then Some s else None
let _ = assert (prefix_map f [1;2;3;4] = Some (6, [4]))
let _ = assert (prefix_map f [1;1] = None)