From 625eaf0570f1b96129bd22861202fa5503caf9b5 Mon Sep 17 00:00:00 2001 From: Jim Pryor Date: Wed, 1 Dec 2010 02:37:55 -0500 Subject: [PATCH 1/1] manip trees: tweaks Signed-off-by: Jim Pryor --- manipulating_trees_with_monads.mdwn | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 -- 2.11.0