1. Make sure that your operation-counting monad from [[assignment6]] is working. Modify it so that instead of counting operations, it keeps track of the last remainder of any integer division. You can help yourself to any of the functions:
let div x y = x / y;;
let mod x y = x mod y;;
let divmod x y = (div x y, mod x y);;
you like. Write a monadic operation that enables you to retrieve the last-saved remainder, at any arbitrary later point in the computation.
2. For the next assignment, read the paper [coreference-and-modality](/coreference-and-modality.pdf). Your task will be to re-express the semantics they offer in the terms we're now working with. You'll probably want to review the lecture notes from this week's meeting, which we haven't yet been able to post. We will do that soon. In the meantime, you can get started reading the paper.
Some advice:
* You don't need to re-express the epistemic modality part of their semantics, just the treatment of indefinites. Though extra credit if you do the whole thing.
* You'll want to use the implementation of "implicitly represented" mutable variables that we discussed at the end of this week's meeting, or the "state monad" Chris presented, which is a simple version of the former. Conceptually, though, it's sometimes useful to switch back and forth between the "implicitly represented" model and the "explicitly represented" model.
* Here are some [hints](/hints/assignment_7_hint_1).