X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=blobdiff_plain;f=hints%2Fassignment_7_hint_5.mdwn;h=779fb2edc75b6b7e9085a9c6df5c22156c486ed6;hp=40df3b81971f5b8c31139c6fcfd7bc942fbdce24;hb=193823d816ee0b6ed88532df8ab2d9f43f66daca;hpb=ddcb99cc42fe32a7a16ba2fe78b9228c354807d0 diff --git a/hints/assignment_7_hint_5.mdwn b/hints/assignment_7_hint_5.mdwn index 40df3b81..779fb2ed 100644 --- a/hints/assignment_7_hint_5.mdwn +++ b/hints/assignment_7_hint_5.mdwn @@ -1,3 +1,15 @@ + + * How shall we handle \[[∃x]]? As we said, GS&V really tell us how to interpret \[[∃xPx]], but for our purposes, what they say about this can be broken naturally into two pieces, such that we represent the update of our starting set `u` with \[[∃xPx]] as:
u >>= \[[∃x]] >>= \[[Px]]
@@ -49,7 +61,7 @@
 	
bind_set (bind_set u \[[∃x]]) \[[Px]]
 	
-* Let's compare this to what \[[∃xPx]] would look like on a non-dynamic semantics, for example, where we use a simple reader monad to implement variable binding. Reminding ourselves, we'd be working in a framework like this. (Here we implement environments or assignments as functions from variables to entities, instead of as lists of pairs of variables and entities. An assignment `r` here is what `fun c -> List.assoc c r` would have been in [week6]( +* Let's compare this to what \[[∃xPx]] would look like on a non-dynamic semantics, for example, where we use a simple reader monad to implement variable binding. Reminding ourselves, we'd be working in a framework like this. (Here we implement environments or assignments as functions from variables to entities, instead of as lists of pairs of variables and entities. An assignment `r` here is what `fun c -> List.assoc c r` would have been in [week7]( /reader_monad_for_variable_binding).) type assignment = char -> entity;;