From f67687c2954ea205290c2db0f3bd6215ef5258f7 Mon Sep 17 00:00:00 2001 From: Jim Pryor Date: Mon, 4 Oct 2010 12:07:28 -0400 Subject: [PATCH 1/1] tweak Oleg's rev,list_equal Signed-off-by: Jim Pryor --- hints/assignment_4_hint_2.mdwn | 22 +++++++++++----------- lambda_library.mdwn | 6 +++--- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/hints/assignment_4_hint_2.mdwn b/hints/assignment_4_hint_2.mdwn index 8acdb136..f9f4cf25 100644 --- a/hints/assignment_4_hint_2.mdwn +++ b/hints/assignment_4_hint_2.mdwn @@ -39,22 +39,22 @@ let list_equal = --> diff --git a/lambda_library.mdwn b/lambda_library.mdwn index 0c00c450..423ad596 100644 --- a/lambda_library.mdwn +++ b/lambda_library.mdwn @@ -65,9 +65,9 @@ and all sorts of other places. Others of them are our own handiwork. ; more efficient reverse builds a left-fold instead ; make_left_list a (make_left_list b (make_left_list c empty)) ~~> \f z. f c (f b (f a z)) let reverse = (\make_left_list lst. lst make_left_list empty) (\h t f z. t f (f h z)) in - ; most elegant + ; from Oleg, of course it's the most elegant ; revappend [a;b;c] [x;y] ~~> [c;b;a;x;y] - let revappend = \lst. lst (\hd sofar. \lst. sofar (make_list hd lst)) I in + let revappend = \left. left (\hd sofar. \right. sofar (make_list hd right)) I in let rev = \lst. revappend lst empty in ; zip [a;b;c] [x;y;z] ~~> [(a,x);(b,y);(c,z)] let zip = \left right. (\base build. reverse left build base (\x y. reverse x)) @@ -331,7 +331,7 @@ let list_equal = (\might_be_equal right_tail. and might_be_equal (isempty right_tail)) ; most elegant -let list_equal = \lst. lst (\hd sofar. \lst. and (and (not (isempty lst)) (eq hd (head lst))) (sofar (tail lst))) isempty +let list_equal = \left. left (\hd sofar. \right. and (and (not (isempty right)) (eq hd (head right))) (sofar (tail right))) isempty --> -- 2.11.0