X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=blobdiff_plain;f=assignment6.mdwn;h=7a2bb0f104245dfd9a9382494a386d13dc068fe9;hp=8c62e73d353d8deb34e4df33c1ea5797f0ee437a;hb=3900b155388b440877c55e853989c21e79a01248;hpb=1ba0ea60877efb8825488d5b3cde52543f179839 diff --git a/assignment6.mdwn b/assignment6.mdwn index 8c62e73d..7a2bb0f1 100644 --- a/assignment6.mdwn +++ b/assignment6.mdwn @@ -5,8 +5,8 @@ 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) + (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 @@ -22,7 +22,7 @@ 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]]. +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