camlspotter avatar camlspotter committed d1dafde

added (||=) #NEW

Comments (0)

Files changed (2)

         (* This should report the caller's location,
            but it is not possible...
         *)
+
+  let (||=) v f = match v with
+    | Some _ -> v
+    | None -> f ()
 end
 
 include Pervasives
     dynamically.
 *)
 
+val (||=) : 'a t -> (unit -> 'a t) -> 'a t  
+(** Chain of defaults
+    [Some v ||= f  =  Some v]
+    [Noen ||= f    =  f ()]
+*)
+
 val catch : (fail:(unit -> 'exn) -> 'a) -> 'a option
 val catch_exn : (unit -> 'a) -> 'a option
 
 module Pervasives : sig 
   val from_Some : 'a option -> 'a
   (** may raise [Invalid_argument] *)
+
+  val (||=) : 'a t -> (unit -> 'a t) -> 'a t  
+  (** Chain of defaults
+      [Some v ||= f  =  Some v]
+      [Noen ||= f    =  f ()]
+  *)
 end
 
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.