Skip to content

Instantly share code, notes, and snippets.

let filter_take ~f:valid n list =
let rec take_from ?(taken = []) ?(n_taken = 0) list =
if n_taken = n then taken
else
match list with
| [] -> taken
| e :: remaining ->
let taken, n_taken =
if valid e then (e :: taken, n_taken + 1) else (taken, n_taken)
in