From: Jim Pryor Date: Wed, 1 Dec 2010 07:37:55 +0000 (-0500) Subject: manip trees: tweaks X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=commitdiff_plain;h=625eaf0570f1b96129bd22861202fa5503caf9b5;hp=f1e654b35f2051f4d2c186938736b45e0e602cd0 manip trees: tweaks Signed-off-by: Jim Pryor --- 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