index b21050b..7d10ab5 100644 (file)
@@ -2,10 +2,11 @@
build a system that will evaluate arithmetic expressions.  Instead of
returning a simple integer as a result, it will deliver the correct
answer along with a count of the number of operations performed during
build a system that will evaluate arithmetic expressions.  Instead of
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 calculuation.  That is, the desired behavior should be like this:
+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)
+                 # lift ( + ) (lift ( / ) (unit 20) (unit 2))
+                                   (lift ( * ) (unit 2) (unit 3)) 0;;
+                     - : int * int = (16, 3)

Here, `lift` is the function that uses `bind` to prepare an ordinary
arithmetic operator (such as addition `( + )`, division `( / )`, or

Here, `lift` is the function that uses `bind` to prepare an ordinary
arithmetic operator (such as addition `( + )`, division `( / )`, or
@@ -16,11 +17,11 @@ 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).

with a starting point (0 relevant computations have occurred previous
to the current computation).

-Assume for the purposes of this excercise that no one ever tries to
+   Assume for the purposes of this excercise that no one ever tries to
divide by zero (so there should be no int option types anywhere in
your solution).

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.
+     You'll need to define a computation monad type, unit, bind, and lift.
We encourage you to consider this hint: [[Assignment 6 Hint 1]].