diff options
Diffstat (limited to 'lib/kernel/liturgical_day.ml')
| -rw-r--r-- | lib/kernel/liturgical_day.ml | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/kernel/liturgical_day.ml b/lib/kernel/liturgical_day.ml new file mode 100644 index 0000000..bbb52b8 --- /dev/null +++ b/lib/kernel/liturgical_day.ml @@ -0,0 +1,27 @@ +open Sexplib0.Sexp_conv + +(* The single stable result schema (parent spec ยง2). *) +type ('s, 'r) t = { + date : Date.t; + rite : string; + temporal : ('s, 'r) Temporal.t; + (** embedded, not flattened: it is already a coherent unit with its own + invariants, and re-listing season/week/weekday here would create two + places for them to disagree *) + observed : 'r Celebration.t; + commemorations : ('r Celebration.t * Precedence.privilege) list; + transferred_in : 'r Celebration.t option; + (** arrived here from an impeded day *) + transferred_out : ('r Celebration.t * Date.t) list; + (** celebrations that left this day, and where each one went. A list, + not an option: RG 97-98 has coinciding I-class feasts transfer + "in order" -- plural -- so a day can lose more than one. Asymmetric + with [transferred_in] deliberately: a day receives at most one + arrival, because RG 96 sends each departure to the next day that + is not I or II class, and the first to arrive occupies it. *) + omitted : ('r Celebration.t * string) list; + (** with the reason, never silent -- Task 12's no-celebration-lost + invariant reads this *) + citations : Citation.t list; (** always empty until Plan 4 *) +} +[@@deriving sexp] |
