X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=blobdiff_plain;f=week7.mdwn;h=f5114046e16a064efb0cad3c2550eb78bddff93e;hp=a78a77e291a6d71883a8acadd5bdc3fa9f2769c4;hb=d9044712f0cf116029c39c68095e703af3367cb1;hpb=ef954bbcb3b568413e2dd48374dbeb7201ccd4bb;ds=sidebyside diff --git a/week7.mdwn b/week7.mdwn index a78a77e2..f5114046 100644 --- a/week7.mdwn +++ b/week7.mdwn @@ -105,19 +105,19 @@ them from hurting the people that use them or themselves. object, we have `(unit x) * f == f x`. For instance, `unit` is a function of type `'a -> 'a option`, so we have -
-    # let ( * ) m f = match m with None -> None | Some n -> f n;;
-    val ( * ) : 'a option -> ('a -> 'b option) -> 'b option = 
-    # let unit x = Some x;;
-    val unit : 'a -> 'a option = 
-    # unit 2 * unit;;
-    - : int option = Some 2
-    
+
+# let ( * ) m f = match m with None -> None | Some n -> f n;;
+val ( * ) : 'a option -> ('a -> 'b option) -> 'b option = 
+# let unit x = Some x;;
+val unit : 'a -> 'a option = 
+# unit 2 * unit;;
+- : int option = Some 2
+
The parentheses is the magic for telling Ocaml that the - function to be defined (in this case, the name of the function - is `*`, pronounced "bind") is an infix operator, so we write - `m * f` or `( * ) m f` instead of `* m f`. +function to be defined (in this case, the name of the function +is `*`, pronounced "bind") is an infix operator, so we write +`m * f` or `( * ) m f` instead of `* m f`. * Associativity: bind obeys a kind of associativity, like this: