camlspotter avatar camlspotter committed 9e0a619

iter_until

Comments (0)

Files changed (2)

 open List
 
+let iter_until f ls = 
+  let st = ref `Continue in
+  List.iter (fun x -> 
+    match f x with
+    | `Break b -> st := `Break b; raise Exit
+    | `Continue -> ()) ls;
+  match !st with
+  | `Continue -> None
+  | `Break v -> Some v
+
 let iteri f l =
   let rec iter n = function
     | [] -> ()
+val iter_until : ('a -> [`Break of 'b | `Continue]) -> 'a list -> 'b option
 val iteri : (int -> 'a -> 'b) -> 'a list -> unit
 val mapi : (int -> 'a -> 'b) -> 'a list -> 'b list
 
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.