diff options
Diffstat (limited to 'lib/kernel')
| -rw-r--r-- | lib/kernel/Generator.ml | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/kernel/Generator.ml b/lib/kernel/Generator.ml index a037b3d..4fd1ce0 100644 --- a/lib/kernel/Generator.ml +++ b/lib/kernel/Generator.ml @@ -54,7 +54,7 @@ class producer_cursor produce finally = let cursor_of ?finally produce = new producer_cursor produce finally |> Protocols.Handle.make -let filter keep cursor = +let filter_map f cursor = cursor_of ~finally:(fun () -> Protocols.Handle.release cursor) (fun ~yield -> @@ -65,7 +65,9 @@ let filter keep cursor = match next with | None -> Ok () | Some tuple -> - if keep tuple then yield tuple; + Option.iter yield (f tuple); pass () in pass () ) + +let filter keep = filter_map (fun tuple -> if keep tuple then Some tuple else None) |
