1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
(* A rite's season and rank vocabulary, as a record of operations. Carries
functions, so it has no sexp form.
The kernel is parameterised by type variables plus this record rather than by
functors (spec §2.3): the safety that matters -- EF code cannot name an OF
season -- is the same either way, and ppx_sexp_conv derives converters for
parametric types natively. *)
type ('s, 'r) t = {
seasons : 's list;
(** canonical liturgical-year order. CORRECTED (final fix wave, item
7): this used to say "Validate's contiguity check reads this" --
false since validate.ml's own "seasons" check switched to
{!Colitur_kernel.Rite.t}.season_runs in this branch (Plan 2
carried item 1: EF has each season in one run, but the modern
form's Ordinary Time does not, so the expected run sequence had
to become rite-supplied rather than derived from this field).
For EF specifically [Rite_ef.rite] sets season_runs to
this very list, so the two happen to agree there, but Validate
itself no longer reads [seasons] to build its expectation. *)
season_to_string : 's -> string;
season_of_string : string -> 's option;
ranks : 'r list;
(** documentation order, highest first. Plan 2 uses it only for the
closure check. CORRECTED (final fix wave, item 7): this used to
say "it is not a precedence relation until Plan 3 defines one" --
Plan 3 did define one (RG 111's dignity ordering, Rite_ef.
Precedence_ef.dignity/compare_dignity), but as its OWN small,
separately-hardcoded function, not one derived from this field:
[admit] needs Vocab_ef.rank's dignity as plain data (RG 8's four
classes), and reusing this field's own [int list] position would
couple that meaning to documentation order the way {!band} is
explicitly NOT allowed to (precedence_ef.ml's own file comment).
This field therefore still carries no precedence relation of its
own; a rite that wanted one derived from it would have to build
it itself. *)
rank_to_string : 'r -> string;
rank_of_string : string -> 'r option;
}
|