ass10 hint tweaks
authorJim Pryor <profjim@jimpryor.net>
Fri, 24 Dec 2010 03:54:35 +0000 (22:54 -0500)
committerJim Pryor <profjim@jimpryor.net>
Fri, 24 Dec 2010 03:54:35 +0000 (22:54 -0500)
Signed-off-by: Jim Pryor <profjim@jimpryor.net>
hints/assignment_10_hint_4.mdwn

index bb5a799..ee6f8bc 100644 (file)
@@ -49,12 +49,13 @@ I said earlier, the encapsulation enforced by that library may make it somewhat
        module TC = T.T(C);;
        module TS = T.T(S);;
        module TR = T.T(R);;
        module TC = T.T(C);;
        module TS = T.T(S);;
        module TR = T.T(R);;
+       let tree = Some (T.Node(T.Leaf '1', T.Node(T.Leaf '2', T.Node(T.Leaf '3', T.Leaf '1'))));;
 
 
        # let v0 = TC.(run_exn (distribute (fun a ->
            C.(shift (fun k -> k a >>= fun v -> unit (1+v)))
          ) tree)) (fun a -> 0);;
 
 
        # let v0 = TC.(run_exn (distribute (fun a ->
            C.(shift (fun k -> k a >>= fun v -> unit (1+v)))
          ) tree)) (fun a -> 0);;
-       - : int = 5
+       - : int = 4
 
 
        # let v1 = TC.(run_exn (distribute (fun a ->
 
 
        # let v1 = TC.(run_exn (distribute (fun a ->
@@ -69,8 +70,10 @@ I said earlier, the encapsulation enforced by that library may make it somewhat
                v1 '2';; ~~> 1
         *)
 
                v1 '2';; ~~> 1
         *)
 
+       # let annotater : char -> ('x, char) S.m =
+           fun a -> S.(puts (fun s -> (update_env s a)) >> unit a);;
        # let v2 = TS.(run (distribute annotater tree)) (fun a -> 0);;
        # let v2 = TS.(run (distribute annotater tree)) (fun a -> 0);;
-       # let (tree',env) = v2 in TR.(run (distribute (fun a -> a) tree')) env;;
+       # let (t, env) = v2 in TR.(run (distribute (fun a -> R.asks (fun e -> e a)) t)) env;;
 
        (* returns tree with leafs replaced with their numbers of occurrences *)
 
 
        (* returns tree with leafs replaced with their numbers of occurrences *)