+(*
+ A variety of semantics are provided. Here is the naming scheme:
+
+ Sem1* is classic semantics with support for variable binding/anaphora.
+ Sem4* would be the dynamic alternative of 1*. (not here provided)
+ You shouldn't be able to implement quantification in these,
+ without bringing in some of the mechanisms of a list/set component.
+ However, Haskell provides those mechanisms in the basic Monad API (as the
+ function Juli8 names `seq`), so we can do quantification without _explicitly_
+ invoking a ListT in our monadic stack.
+
+ Sem2* adds a List component to the stack to do quantification.
+ Sem5* is the dynamic counterpart.
+
+ Sem3* adds an (additional) Reader monad for intensionality.
+ Sem6* is the dynamic counterpart.
+
+ Within that broad organization, here are the sub-patterns:
+
+ SemNa uses just a bool payload, so sent types are box(bool).
+ SemBb makes sent types the Klesli variant of Na, so sent types are
+ bool -> box(bool).
+ SemNc uses instead a unit payload, which we can do when the monadic
+ stack has a List or Option component; then false will be the monad's
+ mzero, whereas truth will be instances of type box(unit) that aren't
+ mzero.
+ SemNd would be the Kleisli variant of Nc, as Nb is the Kleisli variant
+ of Na.
+ SemNe (only for dynamic) uses "topics" or sequences of entities being
+ discussed as payloads, so sent types use box(topic). It also incorporates
+ elements of SemNb/d, so that sent types are really topic -> box(topic).
+ SemNf (not yet provided) would remove the List component from the monad
+ stack, in order to properly implement Veltman's "might". Now sent
+ types would be [topic] -> box([topic]).
+*)
+
+