manip trees: more explanation
[lambda.git] / assignment6.mdwn
index 8c62e73..30763c1 100644 (file)
@@ -4,15 +4,15 @@ returning a simple integer as a result, it will deliver the correct
 answer along with a count of the number of operations performed during
 the calculation.  That is, the desired behavior should be like this:
 
-                 # lift ( + ) (lift ( / ) (unit 20) (unit 2)) 
-                              (lift ( * ) (unit 2) (unit 3)) 0;;
-                   - : int * int = (16, 3)
+                 # lift2 ( + ) (lift2 ( / ) (unit 20) (unit 2))
+                                  (lift2 ( * ) (unit 2) (unit 3)) 0;;
+                     - : int * int = (16, 3)
 
-    Here, `lift` is the function that uses `bind` to prepare an ordinary
+    Here, `lift2` is the function that uses `bind` to prepare an ordinary
 arithmetic operator (such as addition `( + )`, division `( / )`, or
 multiplication `( * )`) to recieve objects from the counting monad as
 arguments.  The response of the interpreter says two things: that
-(20/2) + (2*3) = 16, and that the computation took three arithmetic
+(20/2) + (2\*3) = 16, and that the computation took three arithmetic
 steps.  By the way, that zero at the end provides the monadic object
 with a starting point (0 relevant computations have occurred previous
 to the current computation).
@@ -21,8 +21,8 @@ to the current computation).
 divide by zero (so there should be no int option types anywhere in
 your solution).
 
-     You'll need to define a computation monad type, unit, bind, and lift.
-We encourage you to consider this hint: [[Assignment 6 Hint 1]].
+     You'll need to define a computation monad type, unit, bind, and lift2.
+We encourage you to consider this hint: [[hints/Assignment 6 Hint 1]].
 
 2. Prove that your monad satisfies the monad laws.  First, give
 examples illustrating specific cases in which the monad laws are