X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=blobdiff_plain;f=assignment10.mdwn;h=f16718ddc160e9667fc5e28afeb7f8b01e7e441e;hp=1a17b13ce692194de688c82a9dcc8327caac4363;hb=73b21c99d5a3f8184681a1fa1e0bb2b44ab4c34f;hpb=0d7b3e7a98bc48ad86a61f418f637197742d6421;ds=sidebyside diff --git a/assignment10.mdwn b/assignment10.mdwn index 1a17b13c..f16718dd 100644 --- a/assignment10.mdwn +++ b/assignment10.mdwn @@ -28,8 +28,9 @@ Of course, if you need help or want us to review your efforts, we'll be glad to 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, @@ -42,8 +43,9 @@ Of course, if you need help or want us to review your efforts, we'll be glad 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). @@ -71,7 +73,7 @@ Of course, if you need help or want us to review your efforts, we'll be glad to 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.