+ let sentence1 = Node (Leaf "John",
+ Node (Node (Leaf "saw",
+ Leaf "everyone"),
+ Leaf "yesterday"));;
+
+Then we can crudely approximate quantification as follows:
+
+ # tree_monadize lex sentence1 (fun x -> x);;
+ - : string tree =
+ Node
+ (Leaf "forall x",
+ Node (Leaf "John", Node (Node (Leaf "saw", Leaf "x"), Leaf "yesterday")))
+
+In order to see the effects of evaluation order,
+observe what happens when we combine two quantifiers in the same
+sentence:
+
+ # let sentence2 = Node (Leaf "everyone", Node (Leaf "saw", Leaf "someone"));;
+ # tree_monadize lex sentence2 (fun x -> x);;
+ - : string tree =
+ Node
+ (Leaf "forall x",
+ Node (Leaf "exists y", Node (Leaf "x", Node (Leaf "saw", Leaf "y"))))
+
+The universal takes scope over the existential. If, however, we
+replace the usual `tree_monadizer` with `tree_monadizer_rev`, we get
+inverse scope:
+
+ # tree_monadize_rev lex sentence2 (fun x -> x);;
+ - : string tree =
+ Node
+ (Leaf "exists y",
+ Node (Leaf "forall x", Node (Leaf "x", Node (Leaf "saw", Leaf "y"))))
+
+There are many crucially important details about quantification that
+are being simplified here, and the continuation treatment here is not
+scalable for a number of reasons. Nevertheless, it will serve to give
+an idea of how continuations can provide insight into the behavior of
+quantifiers.