Expose option module to the rest of the program
authorSiraaj Khandkar <siraaj@khandkar.net>
Tue, 18 Sep 2018 17:11:22 +0000 (13:11 -0400)
committerSiraaj Khandkar <siraaj@khandkar.net>
Tue, 18 Sep 2018 17:11:22 +0000 (13:11 -0400)
compiler/src/lib/tiger/tiger_opt.ml [new file with mode: 0644]
compiler/src/lib/tiger/tiger_opt.mli [new file with mode: 0644]
compiler/src/lib/tiger/tiger_test.ml

diff --git a/compiler/src/lib/tiger/tiger_opt.ml b/compiler/src/lib/tiger/tiger_opt.ml
new file mode 100644 (file)
index 0000000..cdacd0e
--- /dev/null
@@ -0,0 +1,11 @@
+type 'a t = 'a option
+
+let map t f =
+  match t with
+  | None   -> None
+  | Some x -> Some (f x)
+
+let get t ~default =
+  match t with
+  | None   -> default
+  | Some x -> x
diff --git a/compiler/src/lib/tiger/tiger_opt.mli b/compiler/src/lib/tiger/tiger_opt.mli
new file mode 100644 (file)
index 0000000..719e854
--- /dev/null
@@ -0,0 +1,5 @@
+type 'a t = 'a option
+
+val map : 'a t -> ('a -> 'b) -> 'b t
+
+val get : 'a t -> default:'a -> 'a
index 038cd84..4d3287d 100644 (file)
@@ -28,18 +28,7 @@ open Printf
 module List = ListLabels
 module String = StringLabels
 
-module Option : sig
-  type 'a t = 'a option
-
-  val map : 'a t -> ('a -> 'b) -> 'b t
-end = struct
-  type 'a t = 'a option
-
-  let map t f =
-    match t with
-    | None   -> None
-    | Some x -> Some (f x)
-end
+module Opt = Tiger_opt
 
 (* TODO: ~expect:Output of 'a | Exception of (exn -> bool) *)
 type t =
@@ -214,7 +203,7 @@ let run tests =
     | Ok produced ->
         let (out_stat, out_msg) =
           match
-            Option.map expect_output (fun expected -> expected = produced)
+            Opt.map expect_output (fun expected -> expected = produced)
           with
           | None ->
               (Skip, "expected output not provided")
This page took 0.023022 seconds and 4 git commands to generate.