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
- # 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)
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
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
-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 lift.
+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
2. Prove that your monad satisfies the monad laws. First, give
examples illustrating specific cases in which the monad laws are