X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=blobdiff_plain;f=manipulating_trees_with_monads.mdwn;h=20039c28d7d03aefc0b44c1b295e0a6d80fea657;hp=76cfef2cc979321e9847c638e6fbd16f68b836c6;hb=625eaf0570f1b96129bd22861202fa5503caf9b5;hpb=f1e654b35f2051f4d2c186938736b45e0e602cd0;ds=sidebyside diff --git a/manipulating_trees_with_monads.mdwn b/manipulating_trees_with_monads.mdwn index 76cfef2c..20039c28 100644 --- a/manipulating_trees_with_monads.mdwn +++ b/manipulating_trees_with_monads.mdwn @@ -117,12 +117,12 @@ enough for now to expect that our reader will expect a function of type `int -> int`. type 'a reader = (int -> int) -> 'a;; (* mnemonic: e for environment *) - let reader_unit (x : 'a) : 'a reader = fun _ -> x;; - let reader_bind (u: 'a reader) (f : 'a -> 'c reader) : 'c reader = fun e -> f (u e) e;; + let reader_unit (a : 'a) : 'a reader = fun _ -> a;; + let reader_bind (u: 'a reader) (f : 'a -> 'b reader) : 'b reader = fun e -> f (u e) e;; It's easy to figure out how to turn an `int` into an `int reader`: - let int2int_reader (x : 'a): 'b reader = fun (op : 'a -> 'b) -> op x;; + let int2int_reader (x : 'a) : 'b reader = fun (op : 'a -> 'b) -> op x;; int2int_reader 2 (fun i -> i + i);; - : int = 4