As Ken Shan points out, this is an instance of the algorithm
for converting name/year citations (like 'see Montague 1970')
- to numerals corresponding to their ('see [24]'). Except that
- bibliograpic numerals don't start with zero.
+ to numerals corresponding to their position in the
+ bibliography ('see [24]'). Except that bibliographic numerals
+ don't start with zero.
Give some thought to efficiency: there are straightforward
solutions that involve traversing the tree once (in order to,
its number of occurrences in the tree. Is there any way to do
that with a single traversal?
- You can assume that the tree is leaf-labeled (no labels on the
- internal nodes), and that the leafs are, say, chars.
+ You can assume that the tree is binary, leaf-labeled (no
+ labels on the internal nodes), and that the leafs are, say,
+ chars.
Here is [a hint](/hints/assignment_10_hint).
fun s -> M.bind (u s) (fun (a, s') -> f a s');;
let elevate (m : 'a M) : 'a stateT(M) =
- fun s -> Wrapped.bind w (fun a -> Wrapped.unit (a, s));;
+ fun s -> M.bind w (fun a -> M.unit (a, s));;
That won't compile in OCaml because we use the `M`s in a way that's intuitive but unrecognized by OCaml. What OCaml will recognize is more complex. Don't worry; you won't need to code a general implementation of StateT.