aboutsummaryrefslogtreecommitdiff
path: root/lib/kernel/subject.ml
diff options
context:
space:
mode:
Diffstat (limited to 'lib/kernel/subject.ml')
-rw-r--r--lib/kernel/subject.ml13
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/kernel/subject.ml b/lib/kernel/subject.ml
new file mode 100644
index 0000000..000aaff
--- /dev/null
+++ b/lib/kernel/subject.ml
@@ -0,0 +1,13 @@
+(* Whom the celebration is of. Named [Subject] rather than [Class] because
+ [class] is an OCaml keyword. Used by precedence in Plan 3 (RG 91). *)
+type t = Temporal | Saint | Bvm | Lord [@@deriving sexp]
+
+let all = [ Temporal; Saint; Bvm; Lord ]
+
+let to_string = function
+ | Temporal -> "temporal" | Saint -> "saint" | Bvm -> "bvm" | Lord -> "lord"
+
+let of_string = function
+ | "temporal" -> Some Temporal | "saint" -> Some Saint
+ | "bvm" -> Some Bvm | "lord" -> Some Lord
+ | _ -> None