```+let map2' f xx yy = xx >>= (fun x -> yy >>= (fun y -> f x y))
This is almost the same `map2` predicate we defined in order to allow -addition in our division monad example. The difference is that this +addition in our division monad example. The *difference* is that this variant operates on verb meanings that take extensional arguments but returns an intensional result. Thus the original `map2` predicate -has `mid (f x y)` where we have just `f x y` here. +has `mid (f x y)` where we have just `f x y` here. The use of `>>=` here to combine *left* with an individual concept, and the use of `map2'` to combine *see* with two intensional @@ -660,12 +666,12 @@ map2' saw (mid bill) (mid ann) 2 (* false *) Ann did see Bill in world 1, but Ann didn't see Bill in world 2. Finally, we can define our intensional verb *thinks*. *Think* is -intensional with respect to its sentential complement, though still extensional -with respect to its subject. (As Montague noticed, almost all verbs +intensional with respect to its sentential complement (it takes complements of type `s -> t`), though still extensional +with respect to its subject (type `e`). (As Montague noticed, almost all verbs in English are extensional with respect to their subject; a possible exception is *appear*.) - let thinks (p:s->t) (x:e) (w:s) = + let thinks (p : s->t) (x : e) (w : s) = match (x, p 2) with ('a', false) -> false | _ -> p w In every world, Ann fails to believe any proposition that is false in world 2. @@ -691,4 +697,6 @@ he didn't leave in world 2, so Ann doesn't in world 1 believe that Cam left: (using `mbind`), and the non-intersective adjectives will take intensional arguments. +**Connections with variable binding**: the rigid individual concepts generated by `mid ann` and the like correspond to the numerical constants, that don't interact with the environment in any way, in the variable binding examples we considered earlier on the page. If we had any non-contingent predicates that were wholly insensitive to intensional effects, they would be modeled using `map2` and would correspond to the operations like `map2 (+)` in the earlier examples. As it is, our predicates *lift* and *saw*, though only sensitive to the *extension* of their arguments, nonetheless *are* sensitive to the world of evaluation for their `bool` output. So these are somewhat akin, at the predicate level, to expressions like `var_n`, at the singular term level, in the variable bindings examples. Our predicate *thinks* shows yet a further kind of interaction with the intensional structures we introduced: namely, its output can depend upon evaluating its complement relative to other possible worlds. We didn't discuss analogues of this in the variable binding case, but they exist: namely, they are expressions like `let x = 2 in ...` and `forall x ...`, that have the effect of supplying their arguments with an environment or assignment function that is shifted from the one they are themselves being evaluated with. + notes: cascade, general env